应用启动初始化操作的各个方式及区别总结

编程

一、 bean的生命周期

首先我们要明白IOC里面bean的生命周期:

  1. bean的实例化
  2. 执行@PostConstruct注解方法
  3. 注入对象属性
  4. 处理ApplicationContextAware接口,即setApplicationContext(ApplicationContext)方法。
  5. 扫描所有BeanPostProcessor接口。传入当前对象执行定义的所有postProcessBeforeInitialization(Object bean, String beanName)方法。
  6. 处理InitializingBean接口的 afterPropertiesSet()方法。
  7. 处理IOC配置文件当前bean配置的init-method方法(很少用)。
  8. 扫描所有的BeanPostProcessor接口。传入当前对象执行定义的所有postProcessAfterInitialization(Object bean, String beanName)方法。
  9. bean的使用。
  10. 当bean销毁时,一般是例如Spring上下文初始化失败时,或在Spring容器关闭时(正常关闭kill -15,而不是kill -9),会处理DisposableBean接口的destroy方法以及@PreDestroy注解的方法,其中@PreDestroy注解的方法较DisposableBean接口的destroy方法先执行。

二、给应用添加初始化操作的方式

常用的给应用添加初始化操作的方式,按执行顺序排列的话:

  1. 实现ApplicationContextAware接口。
  2. 实现InitializingBean接口。
  3. 实现ApplicationListener<ContextRefreshedEvent>接口,注册容器刷新后的监听器。
  4. 实现接口ApplicationRunne接口r。

注:其中1和2的区别是1会注入容器对象,他们可以通过@DependOn注解标识依赖的beanName,控制bean之间的初始化顺序。3和4的区别是4是整个应用启动完成后执行,3是在启动过程中并且所有bean初始化完成。

以上是 应用启动初始化操作的各个方式及区别总结 的全部内容, 来源链接: utcz.com/z/513599.html

回到顶部