基于Spring depends-on的使用详解

Spring depends-on的使用

通过在XML中的里配置depends-on属性或者在一个类上使用注解@DependsOn,可以使一个Bean的产生依赖于其他几个Bean。

请看如下代码:



    
    

son这个Bean的产生依赖于mother这个Bean。

Spring Depends-On 不起作用

beans-realation.xml




    
        
    

    
        
    

    
        
    
    
        
    
package com.yuxishua.beansrelation;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.yuxishua.autowire.Address;
import com.yuxishua.autowire.Car;
import com.yuxishua.autowire.Person;
public class Main
{
    public static void main(String[] args)
    {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-realation.xml");
        Person person = (Person) ctx.getBean("person");
        Address address2 = (Address) ctx.getBean("address2");
        Car car = (Car) ctx.getBean("car");
        System.out.println(address2 );
        System.out.println(person);
        System.out.println(car);
        
    }
}
package com.yuxishua.autowire;
public class Person
{
    private String name;
    private Address address;
    private Car car;
    @Override
    public String toString()
    {
        return "Person [name=" + name + ", address=" + address + ", car=" + car
                + "]";
    }
    public String getName()
    {
        return name;
    }
    public void setName(String name)
    {
        this.name = name;
    }
    public Address getAddress()
    {
        return address;
    }
    public void setAddress(Address address)
    {
        this.address = address;
    }
    public Car getCar()
    {
        return car;
    }
    public void setCar(Car car)
    {
        this.car = car;
    }
}
package com.yuxishua.autowire;
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 + "]";
    }
}
package com.yuxishua.autowire;
public class Address
{
    private String city;
    private String street;
    @Override
    public String toString()
    {
        return "Address [city=" + city + ", street=" + street + "]";
    }
    public String getCity()
    {
        return city;
    }
    public void setCity(String city)
    {
        this.city = city;
    }
    public String getStreet()
    {
        return street;
    }
    public void setStreet(String street)
    {
        this.street = street;
    }
}

就上面的代码,结果输出

Person [name=Tom, address=Address [city=Beijing, street=HanSenLU], car=null]

car 为什么没有注入呢,是spring版本的问题吗?还是什么原因?

spring为4.0.8

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

你可能感兴趣的:(基于Spring depends-on的使用详解)