news 2026/6/26 16:24:08

Spring Bean 的生命周期详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring Bean 的生命周期详解

Spring Bean 的生命周期是指从 Bean 被 Spring 容器创建、初始化、使用到销毁的整个过程。理解这一过程,能帮助你精准控制 Bean 的行为(如自定义初始化逻辑、资源释放),也是解决 Spring 容器相关问题的核心基础。

Spring Bean 的生命周期可分为核心流程扩展流程,核心流程由 Spring 容器的核心容器(BeanFactory/ApplicationContext)主导,扩展流程则通过 Spring 提供的各种接口和注解实现自定义控制。

一、Spring Bean 生命周期的核心阶段(整体概览)

ApplicationContext 容器(最常用的 Spring 容器,如 AnnotationConfigApplicationContext、ClassPathXmlApplicationContext)为例,Bean 的生命周期可概括为 8 个核心阶段,再加上扩展接口的增强,整体流程如下:

plaintext

1. 实例化(Instantiation)→ 2. 属性赋值(Populate)→ 3. 初始化前(PostProcessBeforeInitialization)→ 4. 初始化(Initialization)→ 5. 初始化后(PostProcessAfterInitialization)→ 6. 就绪(Ready)→ 7. 销毁前(PreDestroy)→ 8. 销毁(Destroy)

下面将逐阶段拆解,并结合关键接口、注解代码示例详细说明。

二、各阶段详细解析(附代码实战)

1. 实例化(Instantiation)

  • 作用:创建 Bean 的实例对象(相当于调用 new 关键字)。
  • 底层逻辑:Spring 容器通过反射调用 Bean 的构造方法(无参构造优先,若有参构造需通过 @Autowired 或 XML 配置指定依赖)创建实例。
  • 注意:此时 Bean 仅为 “空对象”,属性(如依赖的其他 Bean)尚未赋值。

2. 属性赋值(Populate Properties)

  • 作用:为 Bean 的属性赋值(包括注入依赖的其他 Bean、基本类型属性等)。
  • 实现方式
    • 自动注入:通过 @Autowired@Resource 等注解实现依赖注入;
    • XML 配置:通过 <property> 标签指定属性值;
    • 注解配置:通过 @Value 注入配置文件中的属性。
  • 关键:这一阶段完成后,Bean 的所有依赖关系已被注入,属性值已初始化。

3. 初始化前(BeanPostProcessor 的 postProcessBeforeInitialization)

  • 作用全局前置处理,对所有 Bean 进行初始化前的统一增强(如修改属性值、添加代理等)。
  • 核心接口BeanPostProcessor(Bean 后置处理器)的 postProcessBeforeInitialization 方法。
    • 该接口是 Spring 提供的核心扩展点,所有实现类会被 Spring 容器自动识别,作用于容器内所有 Bean。
    • 返回值:可返回修改后的 Bean 实例(如代理对象),若返回 null 则当前 Bean 会被忽略。

4. 初始化(Initialization)

这是 Bean 生命周期中自定义逻辑的核心阶段,Spring 提供了多种方式实现初始化逻辑,执行顺序为:

4.1 执行 @PostConstruct 注解的方法(推荐)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 8:56:37

LangGraph工作流转换为LangFlow可视化实践

LangGraph工作流转换为LangFlow可视化实践 在构建AI驱动的应用时&#xff0c;我们常常面临一个两难&#xff1a;一方面希望借助代码实现灵活、可追踪的复杂逻辑&#xff08;如使用LangGraph定义状态机&#xff09;&#xff0c;另一方面又渴望通过拖拽式界面快速验证想法、降低…

作者头像 李华
网站建设 2026/6/25 3:59:11

TCP/UDP协议

目录 TCP协议 特点 适用场景 缺点 UDP协议 特点 适用场景 缺点 对比总结 TCP连接 TCP建立连接的过程称为三次握手 ​​ TCP断开连接的四次挥手​编辑 常用的TCP端口号及其功能 TCP协议 TCP&#xff08;Transmission Control Protocol&#xff09;是一种面向…

作者头像 李华
网站建设 2026/6/25 8:23:33

Qwen3-VL-30B-FP8:高性能多模态模型量化新突破

Qwen3-VL-30B-FP8&#xff1a;高性能多模态模型量化新突破 在AI系统向真实世界任务深度渗透的今天&#xff0c;如何让庞大的视觉语言模型&#xff08;VLM&#xff09;走出实验室、真正落地于高并发、低延迟的生产环境&#xff0c;成为开发者面临的核心挑战。参数动辄百亿级的多…

作者头像 李华
网站建设 2026/6/25 18:04:39

Linly-Talker:打造多模态AI数字人完整指南

Linly-Talker&#xff1a;打造多模态AI数字人完整指南 在短视频爆发、虚拟交互崛起的今天&#xff0c;一个现实摆在面前&#xff1a;内容创作者越来越需要“出镜”&#xff0c;但并非人人都愿意或擅长面对镜头。与此同时&#xff0c;企业对自动化服务的需求也从文字客服升级到…

作者头像 李华
网站建设 2026/6/25 0:56:20

LobeChat能否应用于自动驾驶?车载语音助手升级

LobeChat能否应用于自动驾驶&#xff1f;车载语音助手升级 在智能汽车的演进浪潮中&#xff0c;一个看似简单却极为关键的问题正在浮现&#xff1a;为什么我们和车说话&#xff0c;它还是听不懂“人话”&#xff1f; 尽管今天的车辆已经能自动变道、识别红绿灯&#xff0c;但当…

作者头像 李华
网站建设 2026/6/26 2:09:11

Windows10下WSL安装vLLM 0.11.0避坑指南

Windows10下WSL安装vLLM 0.11.0避坑指南 在当前大模型快速落地的背景下&#xff0c;本地部署一个高性能、低延迟的推理服务已成为许多开发团队的刚需。尤其是像 vLLM 这类支持 PagedAttention 和连续批处理的引擎&#xff0c;凭借其高吞吐、低显存占用的优势&#xff0c;正被广…

作者头像 李华