SmartInitializingSingleton 什么时候执行
时间: 2024-02-25 16:51:36 浏览: 159
XXL-JOB调度系统学习、调度流程、spring生命周期
在Spring容器启动过程中,Bean的初始化过程分为以下三个阶段:
1. 实例化Bean对象
2. 调用Bean对象的setter方法设置属性值和依赖关系
3. 如果Bean实现了InitializingBean接口或者配置了init-method,则执行初始化方法
此外,还有一种情况需要考虑,即在所有单例Bean初始化完成后,执行一些其他的初始化操作。这个时候我们可以使用Spring提供的SmartInitializingSingleton接口。
SmartInitializingSingleton接口是一个回调接口,它只有一个方法:afterSingletonsInstantiated()。当所有单例Bean都初始化完成后,Spring容器会自动回调这个方法,以便我们执行一些其他的初始化操作。
例如,我们可以实现SmartInitializingSingleton接口,并在afterSingletonsInstantiated()方法中执行一些初始化操作,如下所示:
```
@Component
public class MyInitializer implements SmartInitializingSingleton {
@Override
public void afterSingletonsInstantiated() {
// 在这里执行初始化操作
}
}
```
需要注意的是,SmartInitializingSingleton接口只会在单例Bean初始化完成后执行一次,因此适合执行一些全局性的初始化操作。如果需要执行一些与Bean实例相关的初始化操作,则应该考虑使用InitializingBean接口或者配置init-method。
阅读全文