随笔 - 303  文章 - 0  评论 - 3  阅读 - 15万

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   池塘里洗澡的鸭子  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2022-03-15 MongoDB索引Index应用之explain()方法
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示