为什么 Spring 不调用 registerShutdownHook 本身?
Why doesn't Spring call registerShutdownHook itself?
我查看了几个相关问题(例如 and How to close a spring ApplicationContext, and the Spring docs at Shutting down the Spring IoC container gracefully in non-web applications 和其他来源)但没有学到:
为什么 Spring 本身不调用 AbstractApplicationContext::registerShutdownHook
?
为什么留给程序员去做?
我知道没有必要为容器中的 Web 应用程序 运行 调用它,仅适用于独立应用程序。但是事件发生在 JVM 生命周期的后期,以至于 Spring 肯定可以自行管理调用是否必要,是否是 Web 应用程序。这似乎是程序员忘记做的一件容易的事。
Why is it left for the programmer to do?
您需要与 Spring 设计师讨论该设计决策!
但是,这里有一些似是而非的原因:
因为程序员可能不希望它被完成!
因为 "one size fits all" shutdown hook 可能不合适。
因为当注册了多个关闭钩子时,
javadocs 声明初始化顺序未指定。
(意思是如果 Spring 确实注册了一个钩子,那个钩子可以
干扰程序员在另一个钩子中需要做的事情。)
我查看了几个相关问题(例如
为什么 Spring 本身不调用 AbstractApplicationContext::registerShutdownHook
?
为什么留给程序员去做?
我知道没有必要为容器中的 Web 应用程序 运行 调用它,仅适用于独立应用程序。但是事件发生在 JVM 生命周期的后期,以至于 Spring 肯定可以自行管理调用是否必要,是否是 Web 应用程序。这似乎是程序员忘记做的一件容易的事。
Why is it left for the programmer to do?
您需要与 Spring 设计师讨论该设计决策!
但是,这里有一些似是而非的原因:
因为程序员可能不希望它被完成!
因为 "one size fits all" shutdown hook 可能不合适。
因为当注册了多个关闭钩子时, javadocs 声明初始化顺序未指定。 (意思是如果 Spring 确实注册了一个钩子,那个钩子可以 干扰程序员在另一个钩子中需要做的事情。)