Bean 生命周期

Bean 生命周期

一、Bean 实例化的基本流程

Spring容器在进行初始化时,会将xml配置的的信息封装成一个BeanDefifinition对象,所有的BeanDefifinition存储到一个名为beanDefifinitionMap的Map集合中去,Spring框架在对该Map进行遍历,使用反射创建Bean实例对象,创建好的Bean对象存储在一个名为singletonObjects的Map集合中,当调用getBean方法时则最终从该Map集合中取出Bean实例对象返回

二、具体步骤

总体分为四个阶段: 实例化 =》 属性注入 =》 初始化 =》销毁

1、实例化 Bean

根据配置文件中 Bean 的定义,利用反射技术创建 Bean 的实例

2、注入对象依赖的属性值(或对象)
3、处理各种Aware接口
4、执行 BeanPostProcessor 前置处理

如果想对 Bean 进行一些自定义的前置处理,那么可以让 Bean 实现 BeanPostProcessor 接口

将会在该阶段调用 POSTProcessBeforeInitialization(Object obj,String s)方法

5、执行InitializingBean初始化方法

如果 Bean 实现了 InitializingBean 接口,执行 afeterPropertiesSet() 方法

6、执行init-method自定义初始化方法

如果 Bean 在Spring 配置文件中配置了 init-method 属性,则会自动调用其配置的初始化方法

7、执行BeanPostProcessor后置处理

如果这个 Bean 实现了BeanPostProcessor接口将会调postProcessAfterInitialization(Object obj,String s)方法,由于这个方法是在 Bean初始化结束后调用;

8、执行DisposableBean销毁Bean

当 Bean 不再需要时,会经过清理阶段,如果 Bean实现了 DisposableBean 这个接口,会调用其实现的 destroy()方法执行销毁;

9、执行destroy-method自定义销毁方法

如果这个 Bean 的 Spring 配置中配置了destroy-method 属性,会自动调用其配置的自定义销毁方法

相关推荐
Home11 分钟前
23 种设计模式--桥接(Bridge)模式(结构型模式二)
java·后端
编程修仙23 分钟前
第九篇 Spring中的代理思想
java·后端·spring
aiopencode26 分钟前
iOS CPU 使用率深度分析,多工具协同定位高占用瓶颈的工程化方法
后端
I'm Jie35 分钟前
告别重复编码!SpringBoot 字段变更(新旧值)日志工具类的规范化设计与优雅实现
java·spring boot·后端
小马爱打代码1 小时前
Spring AI:提示词工程 - Prompt 角色分类(系统角色与用户角色)
人工智能·spring·prompt
白帽黑客-晨哥1 小时前
基于零信任架构的现代网络安全防护体系研究:从理论到实践
安全·web安全·架构·量子安全
小马爱打代码1 小时前
Spring AI:多模态 AI 大模型
java·人工智能·spring
开心猴爷1 小时前
Bundle Id 创建与管理的工程化方法,一次团队多项目协作中的流程重构
后端
databook1 小时前
用样本猜总体的秘密武器,4大抽样分布总结
后端·python·数据分析
sg_knight1 小时前
SSE 技术实现前后端实时数据同步
java·前端·spring boot·spring·web·sse·数据同步