You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring单例Bean存在依赖时销毁顺序是否与创建顺序相反?

Spring 单例 Bean 销毁顺序官方说明
  • 你测试观测到的「构造函数依赖的单例 Bean 销毁顺序与创建顺序相反」的行为是 Spring 框架的恒定默认行为,有明确的官方设计规范作为支撑,不存在偶发情况。
  • Spring IoC 容器初始化阶段会自动解析所有 Bean 的显式依赖关系(包括构造函数注入、setter 注入、字段注入等常见依赖注入场景),生成完整的 Bean 依赖图谱。你提到的 BeanA 构造函数依赖 BeanB 的场景属于容器可自动识别的显式依赖,无需额外添加@DependsOn注解,容器会自动记录「BeanA 依赖 BeanB」的关联关系。
  • Spring 核心框架的 Bean 生命周期设计中明确规定:单例 Bean 销毁阶段会严格按照依赖关系的逆序执行销毁方法,依赖方先执行销毁逻辑,被依赖方后执行销毁逻辑。对应你的场景,创建顺序为 BeanB → BeanA,销毁顺序自然就是 BeanA → BeanB,和你的测试结果完全吻合。
  • @DependsOn注解仅用于声明容器无法自动识别的隐式依赖(例如 BeanA 没有显式注入 BeanB,但运行逻辑依赖 BeanB 提前初始化的场景),其额外声明的依赖关系同样会遵循上述逆序销毁规则,不会影响显式依赖的默认处理逻辑。

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 19:36:03