【源码解析】SpringBean的生命周期详解
前言:📫 作者简介:小明java问道之路,专注于研究计算机底层,就职于金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的设计和架构📫
🏆 Java领域优质创作者、阿里云专家博主、华为云专家🏆
🔥 如果此文还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦
本文导读
bean的生命周期:指 bean创建——初始化——销毁 的过程
下面先给出我的参考答案,具体分析请看下文详解:
本文代码github链接:
首先配合此段代码先有个宏观性(创建、初始化、销毁)认识:
测试代码:
测试Bean例类:中的 myInit()
和 ·myDestroy()· 方法供我们在配置文件中通过init-method和destroy-method属性进行指定。
实现InstantiationAwareBeanPostProcessor接口:为了编程方便我们直接通过继承Spring中已经提供的一个实现了该接口的适配器类InstantiationAwareBeanPostProcessorAdapter来进行测试。
BeanFactoryPostProcessor接口:
Spring配置文件beans.xml:
运行结果:
下面根据运行结果与资料进行总结:
Spring Bean生命周期为:
1、实例化BeanFactoryPostProcessor实现类
2、执行BeanFactoryPostProcessor的postProcessBeanFactory方法
3、实例化BeanPostProcessor实现类
4、实例化InstantiationAwareBeanPostProcessor实现类
5、执行InstantiationAwareBeanPostProcessor的postProcessorBeforeInstantiation方法
6、执行Bean的构造方法
7、执行InstantiationAwareBeanPostProcessor的postProcessPropertyValues方法
8、为Bean注入属性
9、调用BeanNameAware的setBeanName方法
10、调用BeanFactoryAware的setBeanFactory方法
11、执行BeanFactoryProcessor的postProcessorBeforeInitlalization方法
12、执行InitializingBean的afterPropertiesSet方法
13、调用<bean>的init-method属性指定的初始化方法
14、执行BeanPostProcessor的postProcessAfterinitialization方法
15、执行InstantiationAwareBeanPostProcessor的postProcessAfterinitialization方法
16、容器初始化成功,执行业务代码后,下面开始销毁容器
17、调用DisposibleBean的Destory方法
18、调用<bean>的destroy-method属性指定的初始化方法
- 点赞
- 收藏
- 关注作者
评论(0)