spring的生命周期介绍

bean 的生命周期

image.png
image.png

容器的生命周期

SmartInitializingSingleton、SmartLifecycle、Lifecycle

相同点:
SmartInitializingSingleton和Lifecycle、SmartLifecycle都是在所有的单实例bean创建之后执行。

不同点:
SmartInitializingSingleton优先于Lifecycle、SmartLifecycle执行。
SmartInitializingSingleton只有一个afterSingletonsInstantiated方法。而Lifecycle有start,stop,isRunning等方法。
多个SmartInitializingSingleton实现之间无法排序控制执行的顺序,而SmartLifecycle实现了Phased接口,可以通过int getPhase()控制执行循序。
SmartInitializingSingleton之间可以通过@DependsOn来控制执行顺序,但这是由Spring中@DependsOn注解的作用及原理来实现的. 并不是对SmartInitializingSingleton做了排序。

在springboot中还可以使用ApplicationRunner、CommandLineRunner

CommandLineRunner 和 ApplicationRunner 的作用是相同的。
不同之处在于 CommandLineRunner 接口的 run() 方法接收 String 数组作为参数,即是最原始的参数,没有做任何处理;而 ApplicationRunner 接口的 run() 方法接收 ApplicationArguments 对象作为参数,是对原始参数做了进一步的封装。


通常用法

image.png

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容