Spring之属性注入

对于类成员变量,常用的注入方式有两种

  • 构造函数注入
  • 属性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);

    }

猜你喜欢

转载自blog.csdn.net/u011301372/article/details/81413206