当前位置: 首页 > 知识库问答 >
问题:

为什么Spring调用不注册Shutdown Hook本身?

袁羽
2023-03-14

我看了几个相关的问题(例如,如何在Spring中正确关闭ApplicationContext,如何关闭Spring ApplicationContext,以及Spring文档如何在非web应用程序中优雅地关闭Spring IoC容器,以及其他来源),但没有学到:

我知道,对于在容器中运行的web应用程序,没有必要调用它,只有对于独立的应用程序才需要调用它。但该事件发生在JVM生命周期的较晚阶段,因此无论调用是否必要,Spring都可以自行管理,无论是否需要web应用程序。对于程序员来说,忘记做这件事似乎很容易。

共有1个答案

赵开诚
2023-03-14

为什么留给程序员去做?

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

然而,以下是一些合理的原因:

>

  • 因为程序员可能不希望这样做!

    因为“一刀切”的停机挂钩可能不合适。

    因为当注册了多个关闭挂钩时,javadocs声明初始化的顺序是未指定的。(这意味着,如果Spring确实注册了一个钩子,那么该钩子可能会干扰程序员在另一个钩子中需要执行的操作。)

  •  类似资料:
    • 我使用的是spring kafka 2.2。我们使用confluent schema registry进行模式验证,因为我们发布的是avro消息。 下面是如何在my producer configs中设置架构注册表URL。 配置。put(KafkaAvroSerializerConfig.SCHEMA\u REGISTRY\u URL\u CONFIG,schemaRegistryURL); 现在

    • 问题内容: 我偶然发现了一个问题,可以总结如下: 当我手动创建线程(即通过实例化)时,将适当地调用它。但是,当我与一起使用时,处理程序将被忽略。我错过了什么? 我期望:消息“未捕获的异常…”的三倍 我得到:消息一次(由手动创建的线程触发)。 在Windows 7和Mac OS X 10.5上用Java 1.6复制。 问题答案: 因为异常不会被捕获。 您的ThreadFactory生成的线程没有直接

    • 问题内容: 我通过扩展和实现和创建了自己的Android帐户身份验证器。其中的某些方法由调用,而其他方法则没有。 这很好用: 当我打电话给我时,问题就发生了。AccountManager不会调用我在中定义的方法。它调用其他一些默认方法,该方法仅在启动之前检查是否存在。 这是行不通的。它没有调用我的方法: AuthenticatorService 我创建了服务并定义了。否则不应该工作。 编辑: 我在

    • 问题内容: 什么是RMI注册表?它有什么作用? 问题答案: 本质上,RMI注册表是服务器注册其提供的服务的场所,也是客户端查询这些服务的场所。请参阅Java RMI简介 。摘抄: 图1显示了使用RMI时客户端建立的连接。首先,客户端必须联系RMI注册中心,并请求服务名称。开发人员B不知道RMI服务的确切位置,但是他知道足够联系开发人员A的注册表。这将使他指向他要致电的服务方向。

    • 您好,我想将gcm添加到我的应用程序中。我的应用程序是一个新闻应用程序。用户可以在注册后查看新闻。应用程序询问用户兴趣(经济、运动、汽车等)并保存它们。我想从php和mysql向用户发送消息作为通知。我必须决定将哪些新闻发送给哪些用户。所以我需要注册证。 是Android设备号吗?还是Android设备谷歌账号和Android设备号的组合 还是Android设备google帐户和Android设备

    • 根据Spring Doc API http://docs.Spring.io/Spring-framework/docs/current/javadoc-api/index.html?org/springframework/web/context/contextloaderlistener.html- 这个(ContextLoaderListener)监听器应该注册在web.xml中的Log4jC