一、问题
问题;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。
[color=red]、结论
1.@Autowired属性的注入顺序依赖于class.getDeclaredFields()的顺序
2.@Autowired方法的注入顺序依赖于class.getDeclaredMethods()的顺序
3.@Autowired 属性会优先生效于 @Autowired方法[/color]
问题;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。
[color=red]、结论
1.@Autowired属性的注入顺序依赖于class.getDeclaredFields()的顺序
2.@Autowired方法的注入顺序依赖于class.getDeclaredMethods()的顺序
3.@Autowired 属性会优先生效于 @Autowired方法[/color]
本文探讨了Spring3中Bean的属性注入顺序问题,通过示例代码解释了@Autowired注解在属性与方法上的使用顺序,并总结了@Autowired在不同场景下的执行逻辑。
3325

被折叠的 条评论
为什么被折叠?



