所有四个嵌入式 Web 服务器(Jetty、Reactor Netty、Tomcat 和 Undertow)以及响应式和基于 servlet 的 Web 应用程序都支持正常关闭。 它作为关闭应用程序上下文的一部分发生,并在停止 Bean 的最早阶段执行。 此停止处理使用超时,该超时提供宽限期,在此期间允许完成现有请求,但不允许新请求。SmartLifecycleSpring中文文档

不允许新请求的确切方式因所使用的 Web 服务器而异。 实现可能会停止接受网络层的请求,或者它们可能会返回带有特定 HTTP 状态代码或 HTTP 标头的响应。 使用持久连接还可以更改停止接受请求的方式。Spring中文文档

要了解有关用于 Web 服务器的特定方法的更多信息,请参阅 TomcatWebServerNettyWebServerJettyWebServerUndertowWebServer 的 javadoc。shutDownGracefully
要了解有关用于 Web 服务器的特定方法的更多信息,请参阅 TomcatWebServerNettyWebServerJettyWebServerUndertowWebServer 的 javadoc。shutDownGracefully

Jetty、Reactor Netty 和 Tomcat 将停止在网络层接受新请求。 Undertow 将接受新连接,但会立即响应服务不可用 (503) 响应。Spring中文文档

使用 Tomcat 正常关闭需要 Tomcat 9.0.33 或更高版本。
使用 Tomcat 正常关闭需要 Tomcat 9.0.33 或更高版本。

若要启用正常关闭,请配置该属性,如以下示例所示:server.shutdownSpring中文文档

server.shutdown=graceful
server:
  shutdown: "graceful"

若要配置超时期限,请配置该属性,如以下示例所示:spring.lifecycle.timeout-per-shutdown-phaseSpring中文文档

spring.lifecycle.timeout-per-shutdown-phase=20s
spring:
  lifecycle:
    timeout-per-shutdown-phase: "20s"
如果 IDE 没有发送正确的信号,则对 IDE 使用正常关机可能无法正常工作。 有关更多详细信息,请参阅 IDE 的文档。SIGTERM
如果 IDE 没有发送正确的信号,则对 IDE 使用正常关机可能无法正常工作。 有关更多详细信息,请参阅 IDE 的文档。SIGTERM