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初始化之前。
浙公网安备 33010602011771号