码迷,mamicode.com
首页 > 移动开发 > 详细

Spring初始化之ApplicationRunner、InitializingBean、@PostConstruct执行顺序问题 (附项目例子图片)

时间:2021-06-15 18:53:28      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:方法   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!