Bean之间的依赖配置

来源:互联网 发布:转转钓鱼源码 编辑:程序博客网 时间:2024/05/17 02:39

在实际应用中实例化某个bean时,经常要在实例化该bean之前实例化另外一个bean,因此产生了依赖关系,下面通过实例演示bean之间如何依赖。
假设有一个Person类和一个Car类,在实例化Person类之前要先实现Car的类。

Person类:

package com.lzj.spring;public class Person {    private String name;    private Car car;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Car getCar() {        return car;    }    public void setCar(Car car) {        this.car = car;    }    @Override    public String toString() {        return "Person [name=" + name + ", car=" + car + "]";    }}

Car类:

package com.lzj.spring;public class Car {    private String brand;    private double price;    public String getBrand() {        return brand;    }    public void setBrand(String brand) {        this.brand = brand;    }    public double getPrice() {        return price;    }    public void setPrice(double price) {        this.price = price;    }    @Override    public String toString() {        return "Car [brand=" + brand + ", price=" + price + "]";    }}

spring的配置文件bean.xml为:

<bean id="car" class="com.lzj.spring.Car">        <property name="brand" value="baoma"></property>        <property name="price" value="100000"></property>    </bean>    <!--通过depends-on="car"设置了在获取person的bean时,要先获取car的bean-->    <bean id="person" class="com.lzj.spring.Person" depends-on="car">        <property name="name" value="lzj"></property>    </bean></beans>

测试类:

ClassPathXmlApplicationContext ctx =                 new ClassPathXmlApplicationContext("bean.xml");        Person person1 = (Person) ctx.getBean("person");        System.out.println(person1);

输出为:Person [name=lzj, car=null]
注意:depends-on=”car”只是指定了在获取person的bean时,要现在IOC容器中能获取car的bean,但是并不是说就把car的bean注入到了person的bean中了,要想person用有car的bean,需要在person的bean的配置中获取car的bean,例如配置<property name="car" ref="car"></property>

depends-on=”car”指定的car的bean为person的前置依赖bean,会在person实例化之前创建好。如果前置依赖多个bean,则可以通过逗号,空格的方式指定bean的名称。

原创粉丝点击