@PostContruct
@PostContruct是spring框架的注解,在服务器初始化Spring加载Servlet的时候被调用,并且只会被调用一次。
加载顺序
SpringBean初始化过程
类属性初始化
1、静态属性:static 开头定义的属性
2、静态方法块: static {} 圈起来的方法块
3、普通属性: 未带static定义的属性
4、普通方法块: {} 圈起来的方法块
5、构造函数: 类名相同的方法
6、方法: 普通方法
注解方法初始化顺序
Contruct构造函数 > @AutoWired(@Value) > @PostContruct
destroy() > @PreContruct
解决问题:静态变量不能通过@Value注入
如果想要向对象A(spring bean)中注入对象B,需要先创建出两个对象A、B,所以构造方法会优先于@AutoWired(@Value)执行。
如果对象B交给spring 托管,可直接使用@Value在加载到最后时set方法复制给对象B的属性。
但如果对象B是静态类中,无法使用spring的@Value配置注解,无法从配置文件动态获取注入属性。
或者,对象B是spring 托管,但属性是静态变量,只初始化一次,并且静态变量不能通过@Value注入。
解决方法ÿ