对于类成员变量,常用的注入方式有两种
- 构造函数注入
- 属性setter方法注入
在Spring框架中提供了前两种的属性注入的方式
构造方法的注入方式
编写java的类,提供构造方法
public class Car{
private String name;
private double money;
public Car(String name,double money){
this.name = name;
this.money = money;
}
@Override
public String toString(){
return "Car [name=" + name + ",money=" + money + "]";
}
}
编写配置文件
<!--方式1,根据属性名配置-->
<bean id = "car" class="cn.xd.demo4.Car">
<constuctor-arg name="name" value="雪佛兰"/>
<xonsructor-arg name="money" value="100"/>
</bean>
<!--方式2:根据索引值配置-->
<bean id="car1" class="cn.xd.demo4.Car1">
<constructor-arg index="0" value="changan"/>
<constructor-arg index="1" value="45000"/>
</bean>
测试类
public void run1(){
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
Car1 c1 = (Car1)ac.getBean("car1");
System.out.println(c1);
}
、、、
public class Person {
private String pname;
private Car1 car1;
public Person(String pname,Car1 car1){
this.pname = pname;
this.car1 = car1;
}
@Override
public String toString() {
return "Person [pname =" + pname + ",car1=" + car1 + "]";
}
}
配置文件
<!--演示的构造方法的注入的方式-->
<bean id="car1" class="cn.zst.demo3.Car1">
<constructor-arg index="0" value="changan"/>
<constructor-arg index="1" value="45000"/>
</bean>
<bean id="person" class="cn.zst.demo3.Person">
<constructor-arg name="pname" value="小美"/>
<constructor-arg name="car1" ref="car1"/>
</bean>
测试类
public void run2(){
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
Person person = (Person)ac.getBean("person");
System.out.println(person);
}
属性的setter方法的注入方式
public class Car2 {
private String cname;
private Double price;
public void setCname(String cname) {
this.cname = cname;
}
public String getCname() {
return cname;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
@Override
public String toString() {
return "Car2 [cname= " + cname +",price="+ price+"]";
}
}
配置文件
<!--set方法的注入方式-->
<bean id="car2" class="cn.zst.demo3.Car2">
<property name="cname" value="大本"></property>
<property name="price" value="1000"/>
</bean>
测试类
public void run2(){
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
Car2 car2= (Car2)ac.getBean("car2");
System.out.println(car2);
}