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

未指定Spring Bean销毁方法的影响及依赖Bean销毁顺序疑问

Spring Bean 销毁相关问题解答

问题1:当未为Spring Bean指定destroy方法时,会发生什么?

  • Spring容器关闭时,这个Bean的实例依然会被销毁,容器会标记该Bean进入销毁阶段,最终由JVM的垃圾回收机制回收它占用的内存资源。
  • 唯一区别是:你自定义的清理逻辑(比如关闭数据库连接、释放文件句柄这类操作)不会被执行,因为没有指定对应的destroy方法来触发这些逻辑。

问题2:Bean A是Bean B的依赖,A指定了destroy方法但B没有,容器关闭时B会被销毁吗?如果B没销毁,A的destroy方法会执行吗?

  • 首先,即使B没指定destroy方法,容器关闭时依然会销毁B。Spring会严格按照依赖关系的逆序处理销毁流程:先销毁依赖其他Bean的一方(也就是B,因为它依赖A),再销毁被依赖的一方(A)。
  • B的销毁过程只是不会执行自定义的destroy方法,但容器会正常完成Bean的销毁生命周期,标记它为可回收状态。
  • 至于A,因为它指定了destroy方法,容器会在销毁B之后,执行A的destroy方法,然后再完成A的销毁回收。不存在“B没销毁导致A也不能销毁”的情况,两者的销毁流程是独立但按顺序执行的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:15:35