我查看了几个相关问题(例如,How correctly close the ApplicationContext in Spring和How to close a spring ApplicationContext,以及Shutting down the Spring IoC container gracefully in non-web applications处的Spring文档和其他来源)但未学习:
为什么Spring本身不调用AbstractApplicationContext::registerShutdownHook
?
为什么程序员必须这样做?
我知道没有必要为在容器中运行的网络应用程序调用它,仅用于独立应用程序。但事件发生在JVM生命周期的这么晚,无论是否有必要,无论是否需要Web应用,Spring都可以自行管理。对于程序员来说,忘记这样做似乎很容易。
答案 0 :(得分:1)
为什么要留给程序员呢?
您需要与Spring设计师讨论该设计决策!
但是,这里有一些似是而非的理由:
因为程序员可能不希望它完成!
因为"一个尺码适合全部"关闭钩子可能不合适。
因为当注册了多个关闭挂钩时, javadocs声明未指定初始化顺序。 (意思是如果Spring确实注册了一个钩子,那个钩子就可以了 干扰程序员在另一个钩子中需要做的事情。)