为什么Spring不调用registerShutdownHook本身?

时间:2015-11-01 04:43:30

标签: spring applicationcontext

我查看了几个相关问题(例如,How correctly close the ApplicationContext in SpringHow to close a spring ApplicationContext,以及Shutting down the Spring IoC container gracefully in non-web applications处的Spring文档和其他来源)但未学习:

为什么Spring本身不调用AbstractApplicationContext::registerShutdownHook

为什么程序员必须这样做?

我知道没有必要为在容器中运行的网络应用程序调用它,仅用于独立应用程序。但事件发生在JVM生命周期的这么晚,无论是否有必要,无论是否需要Web应用,Spring都可以自行管理。对于程序员来说,忘记这样做似乎很容易。

1 个答案:

答案 0 :(得分:1)

  

为什么要留给程序员呢?

您需要与Spring设计师讨论该设计决策!

但是,这里有一些似是而非的理由:

  • 因为程序员可能不希望它完成!

  • 因为"一个尺码适合全部"关闭钩子可能不合适。

  • 因为当注册了多个关闭挂钩时, javadocs声明未指定初始化顺序。 (意思是如果Spring确实注册了一个钩子,那个钩子就可以了 干扰程序员在另一个钩子中需要做的事情。)