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 代理通常在此阶段生成→ 使用 → 销毁。

相关新闻

如何高效阅读阿里妈妈技术年刊:从技术雷达扫描到工程决策实践

如何高效阅读阿里妈妈技术年刊:从技术雷达扫描到工程决策实践

1. 从“年刊”到“技术风向标”:一份技术文档的独特价值每年年底,各大科技公司的技术年刊总会成为圈内人关注的焦点。今年,阿里妈妈技术团队的年刊又如约而至,开放下载。乍一看,这似乎只是一份年度工作总结的合集&…

2026/8/2 4:20:02 阅读更多 →
VASP计算中截断能(ENCUT)测试:原理、方法与避坑指南

VASP计算中截断能(ENCUT)测试:原理、方法与避坑指南

1. 项目概述:为什么截断能测试是VASP计算的第一道门槛刚接触VASP做第一性原理计算的朋友,拿到一个结构文件,兴冲冲地准备开始跑总能或者结构优化,是不是经常在INCAR文件里对着ENCUT这个参数犯嘀咕?是直接抄文献里的400…

2026/8/2 4:20:02 阅读更多 →
从微分方程到传递函数:控制理论核心建模与典型环节解析

从微分方程到传递函数:控制理论核心建模与典型环节解析

1. 从微分方程到传递函数:为什么这是控制理论的“通用语言”搞自动控制,无论是调一个电机转速,还是稳定一架无人机的姿态,我们最终面对的都是系统的数学模型。最开始,大家习惯用微分方程来描述系统动态。比如&#xff…

2026/8/2 4:20:02 阅读更多 →

最新新闻

串口通信实战指南:从硬件接线到软件配置的完整解决方案

串口通信实战指南:从硬件接线到软件配置的完整解决方案

串口通信作为嵌入式开发和硬件交互的基础技术,几乎每个电子工程师都会接触到。无论是单片机调试、传感器数据采集,还是工业控制设备通信,串口都是最直接可靠的传输方式。但很多初学者在配置波特率、数据位、停止位时容易遇到各种问题&#xf…

2026/8/2 14:52:27 阅读更多 →
Windows终极优化方案:AtlasOS让系统性能飙升40%的完整指南

Windows终极优化方案:AtlasOS让系统性能飙升40%的完整指南

Windows终极优化方案:AtlasOS让系统性能飙升40%的完整指南 【免费下载链接】Atlas 🚀 An open and lightweight modification to Windows, designed to optimize performance, privacy and usability. 项目地址: https://gitcode.com/GitHub_Trending/…

2026/8/2 14:52:27 阅读更多 →
CleanRL深度强化学习框架:从入门到精通的终极实战指南

CleanRL深度强化学习框架:从入门到精通的终极实战指南

CleanRL深度强化学习框架:从入门到精通的终极实战指南 【免费下载链接】cleanrl High-quality single file implementation of Deep Reinforcement Learning algorithms with research-friendly features (PPO, DQN, C51, DDPG, TD3, SAC, PPG) 项目地址: https:/…

2026/8/2 14:52:27 阅读更多 →
ST3025伺服舵机深度解析:从PWM控制到机器人关节精准驱动

ST3025伺服舵机深度解析:从PWM控制到机器人关节精准驱动

1. 项目概述:从“舵机”到“伺服”,ST3025的精准定位 在机器人、航模、自动化设备这些圈子里,提到“舵机”,大家都不陌生。但如果你和资深的工程师或者玩家交流,他们更习惯称之为“伺服电机”或“伺服舵机”。这不仅仅…

2026/8/2 14:52:27 阅读更多 →
基于YOLOv8与PyQt6的实时吸烟行为检测系统实战

基于YOLOv8与PyQt6的实时吸烟行为检测系统实战

1. 项目缘起:从“烟雾缭绕”到“智能识别”的实战需求 几年前,我在参与一个智慧园区项目时,遇到了一个非常具体且棘手的需求:如何在不侵犯个人隐私的前提下,对园区内多个重点区域(如仓库、配电房、楼道&…

2026/8/2 14:52:27 阅读更多 →
微信小程序getLocation报错:requiredPrivateInfos字段配置与隐私接口声明详解

微信小程序getLocation报错:requiredPrivateInfos字段配置与隐私接口声明详解

1. 项目概述:一个“简单”的权限声明报错 最近在调试一个微信小程序的地图功能时,遇到了一个典型的报错: getLocation:fail the api need to be declared in the requiredPrivateInfos field in app.json 。这个错误对于刚接触小程序隐私接…

2026/8/2 14:51:26 阅读更多 →

日新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 0:00:38 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:38 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 0:00:38 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:38 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/2 6:34:16 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/2 2:47:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/2 0:23:22 阅读更多 →