一、问题
问题;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方法
@Autowired的顺序是怎样执行的?
猜你喜欢
转载自chokee.iteye.com/blog/2212747
今日推荐
周排行