Spring生命周期管理之总结

  Spring生命周期管理之SmartLifecycle,LifecycleProcesso接口详述中跟踪调试深入理解了Spring生命周期管理的一种方式。当然Spring提供了不止这一种方式的生命周期的管理,比如Spring配置之常用配置概述中就有关于bean生命周期init和destroy配置说明。

  那么Spring提供了多少中生命周期管理的方式,以及这些方式使用的业务场景又是什么?

  第一种方式:实现InitializingBean, DisposableBean接口

          

          

       测试:

          

       测试结果:

          

       跟踪调试,init触发点如下:

          

       destroy触发点如下:

          

  第二种方式:Java配置方式使用@Bean的initMethod和destroyMethod

       Person内容添加自定义的初始化和销毁方法:

          

      配置类MyConfig中添加@Bean:

          

  第三种方式:JSR提供的@PostConstruct和@PreDestroy注解

      添加JSR依赖:

          

      Person中添加JSR初始化和销毁方法:

          

  以上三种方式同时测试:

          

  通过测试结果可以得出以下结论:

    1)属性注入在初始化之前;

    2)三种方式初始化的顺序是:JSR提供的@PostConstruct

                  实现InitializingBean接口

                  JavaBean方式配置的自定义初始化方法

      销毁顺序与初始化顺序一致。

  如果将Spring生命周期管理之SmartLifecycle,LifecycleProcesso接口详述中涉及到的第四种方式SmartLifecycle也添加进去,执行顺序是怎样的呢?测试看看:

          

    从测试结果观察,可以发现Lifecycle最后执行初始化,却最先执行销毁动作。

  以上生命周期的案例还夹带了点私货:Person类实现的两个Aware接口,从测试结果看Aware的执行在属性注入之后bean初始化之前。 

posted on 2024-03-15 00:11  池塘里洗澡的鸭子  阅读(33)  评论(0)    收藏  举报