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初始化之前。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2022-03-15 MongoDB索引Index应用之explain()方法