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

相关推荐
wangruofeng21 分钟前
为 CI/CD 装上“眼睛”:App 包大小监控的实践
ci/cd·架构
申阳23 分钟前
Day 6:04. 基于Nuxt开发博客项目-LOGO生成以及ICON图标引入
前端·后端·程序员
硅胶人24 分钟前
[prowlarr][radarr][sonarr][qBitorrent]套件打造家庭影音中心
后端
JavaGuide35 分钟前
OPPO 后端校招面试,过于简单了!
java·后端
调试人生的显微镜43 分钟前
如何查看手机使用记录?四种实用方法详解
后端
侯爵1 小时前
rabbitmq 如何保证消息顺序消费
后端
sualpha1 小时前
再见,StringManipulation!AI一键搞定字符串转换、JSON格式化与翻译
后端
quant_19861 小时前
【教程】使用加密货币行情接口 - 查询比特币实时价格
开发语言·后端·python·websocket·网络协议
得物技术1 小时前
得物管理类目配置线上化:从业务痛点到技术实现
后端·算法·数据分析
小虚竹1 小时前
Rust日志系统完全指南:从log门面库到env_logger实战
开发语言·后端·rust