【源码解析】SpringBean的生命周期详解
【摘要】 bean的生命周期:指 bean创建——初始化——销毁 的过程
前言:📫 作者简介:小明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属性指定的初始化方法
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)