@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。


[color=red]、结论

1.@Autowired属性的注入顺序依赖于class.getDeclaredFields()的顺序
2.@Autowired方法的注入顺序依赖于class.getDeclaredMethods()的顺序
3.@Autowired 属性会优先生效于 @Autowired方法[/color]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值