Spring Bean 的生命周期
📌 Spring Bean 的生命周期
🎯 生命周期流程
🚀 生命周期各阶段
- ① BeanDefinition 注册:Spring 扫描配置类或 XML,将 Bean 定义注册到 IoC 容器。
- ② 实例化 Bean:通过构造方法创建对象。
- ③ 属性填充:完成 @Autowired、@Resource 等依赖注入。(有的属性还有注入,比如没有标注 @Autowired的属性)
- ④ Aware 回调:如果实现 BeanNameAware、BeanFactoryAware、ApplicationContextAware 等接口,会注入对应对象。
- ⑤ BeanPostProcessor 前置处理:初始化之前执行,可修改 Bean。
- ⑥ 初始化:依次执行 @PostConstruct、afterPropertiesSet()、init-method。(注入其他属性)
- ⑦ BeanPostProcessor 后置处理:初始化完成后执行,Spring AOP 动态代理通常在这里创建。
- ⑧ Bean 使用:业务代码正常调用 Bean。
- ⑨ Bean 销毁:容器关闭时依次执行 @PreDestroy、destroy()、destroy-method。
💡 常见扩展点
| 扩展接口 | 作用 |
|---|---|
| BeanPostProcessor | Bean 初始化前后增强(AOP 核心) |
| InstantiationAwareBeanPostProcessor | 实例化阶段扩展 |
| BeanFactoryPostProcessor | 修改 BeanDefinition |
| InitializingBean | 初始化回调 |
| DisposableBean | 销毁回调 |
Spring Bean 生命周期可以概括为:
实例化 → 属性注入 → Aware 回调 → BeanPostProcessor 前置 → 初始化(@PostConstruct、afterPropertiesSet、init-method) → BeanPostProcessor 后置(AOP) → Bean 使用 → Bean 销毁(@PreDestroy、destroy、destroy-method)。
其中 BeanPostProcessor 是整个生命周期中最重要的扩展点,也是 Spring AOP、事务、缓存等众多功能实现的基础。
相关文章
-
svn的常见操作
1、代码提交 直接commit即可 2、代码回滚 如果代码已经提交,你可以使用 svn merge 来回滚到某个特定的版本。 如果代码没有提交,可以使用 svn revert 来撤销本地修改。
NEW个对象 2025-03-12
-
微服务节点某一个节点出现了降级,但是其他服务都正常,是什么原因造成的?
微服务节点某一个节点出现了降级,但是其他服务都正常,是什么原因造成的?微服务节点某一个节点出现了降级,但是其他服务都正常,是什么原因造成的?
NEW个对象 2026-06-22
-
多线程处理大数据集:如何将海量数据拆分并行计算提升处理效率
多线程处理大数据集的核心思想是将大任务拆分为多个小任务,通过线程池并行执行后再汇总结果,从而提升整体计算效率。 在实际企业级应用中,常见的数据拆分方式包括分页拆分、ID范围拆分、时间区间拆分以及业务维度拆分。合理的任务切分策略往往比单纯增加线程数量更重要。 对于百万级数据,多线程已经能够带来显著收益;对于亿级数据,则需要结合线程池、分库分表、消息队列以及分布式计算框架共同构建完整的大数据处理体系。
NEW个对象 2026-06-15