news 2026/4/23 13:22:19

Spring中Bean的生命周期

作者头像

张小明

前端开发工程师

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


文章目录

      • 1. **生产(Production)**
        • (1)定义 Bean(Bean Definition)
        • (2)创建 Bean(Bean Instantiation & Initialization)
        • (3)添加 Bean(Add to Container)
      • 2. **使用(Usage)**
      • 3. **销毁(Destruction)**

Spring Bean 生命周期= 生产 → 使用 → 销毁
生产阶段包括:Bean 定义、Bean 创建、Bean 注册
创建 bean包括:创建实例、添加属性、初始化实例、注册销毁

1.生产(Production)

目标:让 Bean 变成容器中一个可用的对象。

(1)定义 Bean(Bean Definition)
  • 含义:在 Spring 容器启动时,通过 XML、注解(如@Component)、Java Config(@Bean)等方式注册 Bean 的元数据
  • 技术体现:生成BeanDefinition对象,存入BeanFactoryBeanDefinitionMap
  • 注意:此时尚未创建实例,只是“蓝图”。

✅ 这一步确实属于“生产”的前置准备。


(2)创建 Bean(Bean Instantiation & Initialization)

这是核心阶段,Spring 内部称为“bean creation”,包括:

  • 创建实例(Instantiation)
    → 调用构造函数 / 工厂方法,生成原始对象。
  • 属性填充(Populate Properties)
    → 注入依赖(如@Autowired字段)。
  • 初始化(Initialization)
    → 执行@PostConstructInitializingBean.afterPropertiesSet()init-method等。
  • 注册销毁回调(Register Destruction Callback)
    → 如果是单例,容器会记录其销毁方法(用于关闭时调用)。

⚠️ 注意:“注册销毁”不是“执行销毁”,而是提前登记,属于“生产”阶段的收尾工作。


(3)添加 Bean(Add to Container)
  • 实际上,一旦 Bean 创建并初始化完成,Spring 就会将其放入单例池(singletonObjects)中(针对 singleton 作用域)。
  • 此后其他 Bean 就可以从容器中获取它。
  • 所以“添加”可理解为“将初始化完成的 Bean 缓存到容器中,供后续使用”

2.使用(Usage)

  • 应用代码通过@AutowiredgetBean()等方式获取并使用 Bean
  • 对于 singleton Bean,所有使用者共享同一个实例。
  • 对于 prototype Bean,每次获取都会走一遍“创建”流程(但不归还给容器,也不管理销毁)。

3.销毁(Destruction)

  • 仅适用于 singleton Bean(prototype 不由容器销毁)。
  • 当容器关闭(context.close()registerShutdownHook()触发)时:
    • 调用@PreDestroy
    • 调用DisposableBean.destroy()
    • 调用destroy-method
  • 容器内部会遍历disposableBeans集合,依次销毁。

🌟 面试推荐回答模板

Spring Bean 的生命周期可以分为生产、使用和销毁三个阶段。
其中生产阶段包括 Bean 的定义、创建和注册。
创建 Bean 时又会经历实例化、属性注入、初始化,并在初始化完成后注册销毁回调。
随后 Bean 进入使用阶段,被容器管理和依赖。
容器关闭时进入销毁阶段,执行相应的销毁方法。

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

电机驱动板散热设计:Altium Designer PCB实战解析

电机驱动板散热设计:Altium Designer PCB实战解析在工业自动化、机器人和新能源汽车的推动下,电机驱动系统正朝着高功率密度、小型化、长寿命的方向快速发展。而在这背后,一个常被忽视却至关重要的挑战悄然浮现——如何让PCB自己“会散热”&a…

作者头像 李华
网站建设 2026/4/23 11:31:16

SBOM软件物料清单生成:满足企业安全审查

SBOM软件物料清单生成:满足企业安全审查 在一次金融客户的现场审计中,安全团队被要求提供其AI知识平台所使用的所有第三方组件列表。开发负责人翻出几份零散的package-lock.json和手写文档,却无法确认是否覆盖了所有依赖——尤其是那些由框架…

作者头像 李华
网站建设 2026/4/23 11:31:30

anything-llm社区活跃度分析:更新频率与问题响应

Anything-LLM 社区活跃度分析:更新频率与问题响应 在大语言模型(LLM)技术席卷各行各业的今天,如何将这些“通才型”模型转化为真正能解决具体问题的“专家助手”,成了开发者和企业最关心的问题之一。通用模型固然强大&…

作者头像 李华
网站建设 2026/4/18 0:44:53

整合多种大模型的AI终端:anything-llm扩展性分析

整合多种大模型的AI终端:anything-llm扩展性分析 在企业知识管理日益智能化的今天,一个常见的痛点浮现出来:员工每天要花大量时间翻找内部文档、邮件或共享盘中的政策文件,而传统搜索引擎又难以理解语义关联。与此同时&#xff0c…

作者头像 李华
网站建设 2026/4/23 6:59:45

计费模式设计参考:借鉴anything-llm做商业化变现

计费模式设计参考:借鉴 anything-llm 做商业化变现 在大语言模型(LLM)应用逐渐从技术验证走向产品落地的今天,一个现实问题摆在开发者面前:如何让一款功能强大的 AI 工具不仅能“跑起来”,还能“赚回来”&a…

作者头像 李华
网站建设 2026/4/23 8:34:08

金银狂飙齐创历史新高!2026年上涨已成定局?

12月23日,全球贵金属投资市场见证了一个历史性时刻:在多重利好共振下,现货黄金价格突破4400美元大关,现货白银攀升至69美元上方,二者双双刷新历史峰值。这不仅是单一交易日的胜利,更是黄金与白银——录得自…

作者头像 李华