gpt4 book ai didi

java - 如何模拟离线 Spring Boot 应用程序

转载 作者:行者123 更新时间:2023-12-02 09:00:27 26 4
gpt4 key购买 nike

我有一个带有端点的 Controller 。我想在运行时禁用此端点,以便应用程序对于用户来说看起来是离线的。

当前执行此操作是为了禁用端点:

private static final Map<RequestMappingInfo, HandlerMethod> requestMappings = new HashMap<>();

this.context.getHandlerMethods().forEach((k, v) -> {
if (k.getPatternsCondition().getPatterns().contains("/customer")) {
requestMappings.put(k, v);
}
});
requestMappings.forEach((k, v) -> this.context.unregisterMapping(k));

这要启用:

requestMappings.forEach((k, v) -> this.context.registerMapping(k, v.getBean(), v.getMethod()));
requestMappings.clear();

这就像一个魅力,bean 在运行时取消注册和注册。然而,当用户调用我的应用程序时,他们得到的是 404,而不是连接超时,这正是我正在寻找的。

我确实明白为什么我收到 404。请求仍然进入应用程序,但找不到路径,因为 bean 未注册,因此它返回 404。我如何处理“实际离线”情况根本不会返回任何内容。

最佳答案

我真的不明白这种场景的用例是什么。

我可以想到一些方法:

  1. 只需停止应用程序即可。正如评论中已经指出的那样 - 客户端将尝试连接并最终会遇到连接超时。

  2. “以编程方式”重新启动应用程序上下文,而无需重新启动整个 JVM。有一个tutorial关于这样做。

第二种方法只有与您应在应用程序上下文重新启动期间提供的属性 spring.main.web-environment=false 结合使用才具有吸引力。

关于java - 如何模拟离线 Spring Boot 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60209445/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com