标签:方法 com 图片 生成 自己 应该 code sdn 注解
前言
因为要用到Spring的初始化加载bean,比如Spring上下文的获取类应该优先加载,监听什么的类应该在启动后加载,所以考虑先后顺序,所以研究一下ApplicationRunner、InitializingBean、@PostConstruct的执行先后顺序问题
一、ApplicationRunner 接口的用法
ApplicationRunner : 是一个接口,里面定义一个run(ApplicationArguments args)方法,我们需要自己写一个类去实现这个这接口,并实现接口里面的run(ApplicationArguments args)方法。
例如下图:
二、InitializingBean接口的用法
InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候都会执行该方法。注意,实现该接口的最好加上Spring的注解注入,比如@Component
例如下图:
三、@PostConstruct注解的用法
如果想在生成对象时候完成某些初始化操作,而偏偏这些初始化操作又依赖于依赖注入,那么就无法在构造函数中实现。为此,可以使用@PostConstruct注解一个方法来完成初始化,@PostConstruct注解的方法将会在依赖注入完成后被自动调用。
优先级:
Constructor >> @Autowired >> @PostConstruct
具体请参考:@PostConstruct注解的使用
例如下图:
三者在Spring项目启动的执行顺序:
由此可知: @PostConstruct>InitializingBean>ApplicationRunner
例如下图 :
所以各位使用的时候当心了, 使用不当容易造成未知的问题哦!
原文链接:https://blog.csdn.net/moneyshi/article/details/108864172
Spring初始化之ApplicationRunner、InitializingBean、@PostConstruct执行顺序问题 (附项目例子图片)
标签:方法 com 图片 生成 自己 应该 code sdn 注解
原文地址:https://www.cnblogs.com/asfda/p/14885928.html