實(shí)體類:
public class Person {
private String name;
private int age;
private double type;
public Person(){
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person(String name,double type){
this.name=name;
this.type=type;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", type=" + type + "]";
}
}
能夠看到,Person這個(gè)類有兩個(gè)有參構(gòu)造器,不過不用慌,我們?cè)趚ml中設(shè)置bean,使用constructor-arg標(biāo)簽
<bean id="p1" class="com.igeek.lesson3.Person" scope="prototype">
<constructor-arg value="李四" index="0"></constructor-arg>
<constructor-arg value="18" type="int"></constructor-arg>
</bean>
constructor-arg:通過構(gòu)造函數(shù)注入筒严。
- value 表示你要注入的屬性的值
- index 表示參數(shù)下標(biāo)
- type 指定類型
- 通過scope屬性 可以執(zhí)行 spring IOC容器 創(chuàng)建對(duì)象的類型.prototype
原型模式(多例模式) 每次調(diào)用IOC容器的getBean方法, 就會(huì)返回一個(gè)新的對(duì)象()
ApplicationContext ac = new ClassPathXmlApplicationContext("com/igeek/lesson3/beans.xml");
Person p1 = (Person) ac.getBean("p1");
System.out.println(p1);
輸出結(jié)果
Person [name=湯姆, age=18]
另外,若想注入較為特殊的樣式:
<bean id="p3" class="com.igeek.lesson3.Person">
<constructor-arg index="0">
<value><![CDATA[<小馬>]]></value>
</constructor-arg>
<constructor-arg type="int">
<value>13</value>
</constructor-arg>
</bean>
輸出結(jié)果:
Person [name=<小馬>, age=13, type=0.0]