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 属性,会自动调用其配置的自定义销毁方法

相关推荐
YYYing.13 小时前
【设计模式系列 (九) 】装饰器模式
c++·后端·设计模式·装饰器模式·c/c++
蜗牛互联网13 小时前
Gemini 4 Argon的1M输出窗口与长程Agent工程边界
java·人工智能·后端
weixin_4045512414 小时前
AI Native 架构建议:从零开始以 AI 为核心构建系统
人工智能·架构
蜗牛互联网14 小时前
从GitHub动态工作流理解确定性编排与Agent判断边界
java·人工智能·后端·github
梦帮科技14 小时前
推测解码(Speculative Decoding)与 Draft-Target 双核协同:接受率判据、树状验证与两倍吞吐无损加速
网络·人工智能·深度学习·神经网络·线性代数·矩阵·架构
努力努力再努力wz15 小时前
【CUDA 入门系列】核函数与线程模型:一文理清 Grid、Block、dim3、内置变量与全局索引
c++·架构
海宇数据15 小时前
零信任架构实战:基于海宇活体识别V步骤1构建自动化考前活体认证网关
运维·人工智能·架构·自动化
bullkingluo15 小时前
从零到一搭建企业级智能问答系统:Ch12 · 结构化输出与工具调用
人工智能·架构·llm
bullkingluo15 小时前
从零到一搭建企业级智能问答系统:Ch11 ·大模型调参与效果评测
人工智能·架构·llm
鶴哥只手遮天15 小时前
深入理解OpenSceneGraph(五):插件生态与最佳实践
后端