@Autowired的顺序是怎样执行的?

一、问题

问题;Spring3中在Bean中多个属性,多个方法@Autowired的顺序是怎样执行的?

Demo


[java] view plaincopy
@Component 
public class MyBean { 
    @Value("#{properties['security.token.default']}") 
    private String expiretime;  //1 
 
    public String getExpiretime() { 
        return expiretime; 
    } 
 
    @Autowired 
    public void setExpiretime(   //2 
            @Value("#{bcmsmProperties['security.token.default']}") String expiretime) { 
        this.expiretime = expiretime; 
    } 
 
    @Autowired 
    public void init() { //3 
        System.err.println("expiretime2:" + expiretime); 
    } 
 


是位置1 还是位置2 还是位置3先执行?



执行结果:

1.先执行位置1,属性expiretime先被注入;

2.再到位置3 init();

3.再到位置2 setExpiretime。



、结论

1.@Autowired属性的注入顺序依赖于class.getDeclaredFields()的顺序
2.@Autowired方法的注入顺序依赖于class.getDeclaredMethods()的顺序
3.@Autowired 属性会优先生效于 @Autowired方法

猜你喜欢

转载自chokee.iteye.com/blog/2212747
今日推荐