Spring Bean 的生命周期到底是什么? Bean 的生命周期指的是一个对象在 Spring 容器中从创建、初始化到被使用再到最终销毁所经历的完整过程。这道题是面试高频题但很多人备考时习惯去网上找帖子背图。其实不需要死记硬背把核心阶段理解透自然能用自己的话讲清楚。BeanFactory 接口的源码注释中明确说明它的实现类应当支持标准的 Bean 生命周期接口并给出了标准初始化方法及其顺序。一、源码入口从 refresh 到 doCreateBean在refresh()流程中Bean 的创建最终会进入finishBeanFactoryInitialization()。这里会遍历容器中所有需要初始化的 BeanBean 名先被收集进beanNames集合并依次调用getBean()完成实例化。getBean()内部继续进入doGetBean()。当缓存中不存在目标 Bean 时会进一步调用createBean()最终来到真正负责创建对象的doCreateBean()。Spring 源码中很多以 do 开头的方法承担核心执行逻辑分析源码时通常需要重点关注。二、实例化靠反射生成对象createBeanInstance()的职责就是完成 Bean 实例化。Spring 底层仍然采用 Java 反射创建对象本质流程与手写反射一致先获取Class对象再获取构造器最后通过反射调用构造方法生成实例。实际代码中多数是无参构造因此会通过getDeclaredConstructor()获取无参构造器再交由BeanUtils工具类调用ctor.newInstance()完成实例化。三、填充属性populateBean实例化完成后进入populateBean()负责为 Bean 注入依赖和属性值。属性注入完成后Bean 还不能立即对外提供服务。接下来进入初始化阶段这也是 Bean 生命周期最重要的一部分。四、初始化Aware、后置处理器与初始化方法初始化阶段首先处理各种 Aware 接口例如BeanNameAware、BeanFactoryAware等。Spring 会把容器相关信息注入 Bean使其能够感知自身所处的运行环境。随后执行BeanPostProcessor的前置方法postProcessBeforeInitialization()。之后进入初始化方法如果 Bean 实现了InitializingBean接口会调用afterPropertiesSet()。Bean 的创建全程由容器完成若需要在属性装配完成后执行收尾逻辑afterPropertiesSet()是常用的扩展点。如果配置中指定了init-method会执行对应的自定义初始化方法不过这种方式相对少用。最后执行BeanPostProcessor的后置方法postProcessAfterInitialization()。如果 Bean 需要增强例如使用 AOP这一步会返回代理对象而不是最初创建的原始对象。初始化方式使用方式推荐程度InitializingBean实现接口重写afterPropertiesSet()常用扩展点属性装配后的收尾机会init-method配置中指定自定义方法名相对少用后置方法执行完毕Bean 的创建流程就全部完成。五、使用与销毁初始化完成后Bean 即可对外提供服务通过getBean()获取使用。容器关闭时Bean 进入销毁阶段销毁方式与初始化对应如果 Bean 实现了DisposableBean接口会调用destroy()方法释放资源一类的收尾逻辑通常放在这里。如果配置中指定了destroy-method会执行对应的自定义销毁方法同样相对少用。需要注意的是容器只负责单例 Bean 的销毁prototype 作用域的 Bean 交出实例后便不再归容器管理。整个 Bean 生命周期可以归纳为下面八个阶段实例化反射生成对象→ 填充属性 → 调用 Aware 接口 → 执行 BeanPostProcessor 前置 → 初始化afterPropertiesSet / init-method→ 执行 BeanPostProcessor 后置AOP 代理通常在此阶段生成→ 使用 → 销毁。

相关新闻

最新新闻

QCMA完全指南:免费开源PS Vita内容管理终极解决方案

QCMA完全指南:免费开源PS Vita内容管理终极解决方案

QCMA完全指南:免费开源PS Vita内容管理终极解决方案 【免费下载链接】qcma Cross-platform content manager assistant for the PS Vita 项目地址: https://gitcode.com/gh_mirrors/qc/qcma QCMA(Quality Content Manager Assistant)是…

2026/8/2 5:46:18
【AI驱动配置管理革命】:20年运维专家亲授5大落地陷阱与避坑指南

【AI驱动配置管理革命】:20年运维专家亲授5大落地陷阱与避坑指南

更多请点击: https://codechina.net 第一章:AI驱动配置管理的范式跃迁 传统配置管理长期依赖静态模板、人工审核与分环境手动同步,导致发布延迟、配置漂移频发、故障定位困难。AI驱动的配置管理不再将配置视为静态声明,而是将其建…

2026/8/2 5:46:18
Akebi-GC:5大核心功能彻底改变你的原神游戏体验

Akebi-GC:5大核心功能彻底改变你的原神游戏体验

Akebi-GC:5大核心功能彻底改变你的原神游戏体验 【免费下载链接】Akebi-GC (Fork) The great software for some game that exploiting anime girls (and boys). 项目地址: https://gitcode.com/gh_mirrors/ak/Akebi-GC 在广阔而迷人的提瓦特大陆上&#xff…

2026/8/2 5:46:18
视频码率控制策略深度对比:CBR vs VBR vs CRF 的适用场景分析

视频码率控制策略深度对比:CBR vs VBR vs CRF 的适用场景分析

引言 视频编码时,"码率控制"是决定输出文件质量与体积的核心环节。不同的码率控制策略会导致同一段视频在相同编码参数下产生截然不同的效果——有的体积过大浪费带宽,有的局部画面糊成一片。本文聚焦三种最基础的码率控制模式——CBR&#xf…

2026/8/2 5:46:18
红砖设计及材料说明和举例

红砖设计及材料说明和举例

红砖 红砖是以粘土,页岩,煤矸石等为原料,经粉碎,混合捏练后以人工或机械压制成型,经干燥后在900摄氏左右的温度下以氧化焰烧制而成的烧结型建筑砖块,由古罗马人发明。 产品简介 红砖也叫粘土砖。红砖技术标号一般为75号到100号。普通烧结砖(红砖)也叫标准砖的尺寸是…

2026/8/2 5:46:18
USB3300高速USB接口板设计:从PHY原理到FPGA/MCU集成实战

USB3300高速USB接口板设计:从PHY原理到FPGA/MCU集成实战

1. 项目概述:USB3300高速USB接口板如果你在嵌入式开发、硬件调试或者需要为你的项目添加高速USB通信功能时,感到无从下手,那么这块围绕USB3300 PHY芯片设计的USB HS Board,可能就是你要找的“瑞士军刀”。它不是一个成品设备&…

2026/8/2 5:41:17