java程序设计开发,设计思想Spring开源框架-IOC与AOP-Bean的生命周期,Bean 的生命周期指 Spring 容器从创建 Bean 实例到销毁 Bean 实例的完整过程
Java 程序设计开发:Spring 框架 - IOC 与 AOP-Bean 的生命周期学习笔记
一、Bean 生命周期核心概念
定义:
Bean 的生命周期指 Spring 容器从创建 Bean 实例到销毁 Bean 实例的完整过程,包括实例化、依赖注入、初始化、使用和销毁等阶段。
核心价值:
- 控制 Bean 的初始化和销毁逻辑(如资源加载、连接释放)。
- 允许在特定阶段干预 Bean 的创建过程(如 AOP 代理生成、自定义初始化逻辑)。
二、Bean 生命周期完整
流程(以单例 Bean 为例)
1. 核心阶段与关键接口 / 注解
graph TD
A[实例化 Bean] --> B[依赖注入(构造器/Setter/字段)]
B --> C[初始化前处理:BeanPostProcessor.postProcessBeforeInitialization]
C --> D[执行初始化逻辑]
D --> E[初始化后处理:BeanPostProcessor.postProcessAfterInitialization]
E --> F[Bean就绪,供应用使用]
F --> G[容器关闭时触发销毁逻辑]
D -->|@PostConstruct<br>InitializingBean.afterPropertiesSet<br>init-method| D
G -->|@PreDestroy<br>DisposableBean.destroy<br>destroy-method| G
2. 阶段详解
阶段 | 触发条件 | 可用接口 / 注解 | 作用 |
---|---|---|---|
实例化 | BeanFactory.getBean() 或容器预初始化 |
无 | 通过反射创建 Bean 实例(调用无参构造器或工厂方法) |
依赖注入 | 实例化后,容器解析依赖关系 | @Autowired /@Value / 构造器 / Setter |
注入依赖对象(如其他 Bean、配置属性) |
初始化前处理 | 依赖注入后,初始化逻辑执行前 | BeanPostProcessor.postProcessBeforeInitialization |
允许修改 Bean 属性(如 AOP 在此阶段前处理) |
初始化逻辑 | 开发者自定义的初始化代码 | @PostConstruct (推荐)InitializingBean.afterPropertiesSet |