Плавное завершение работы поддерживается всеми четырьмя встроенными веб-серверами (Jetty, Reactor Netty, Tomcat и Undertow), а также реактивными веб-приложениями и веб-приложениями на основе сервлетов. Оно осуществляет в рамках закрытия контекста приложения и выполняется на самом раннем этапе остановки бинов SmartLifecycle. Эта процедура обработки прекращения работы использует время ожидание, которое обеспечивает период отсрочки, в течение которого существующим запросам будет позволено завершиться, но передача новых запросов будет запрещена. Точный способ запрета передачи новых запросов зависит от используемого веб-сервера. Jetty, Reactor Netty и Tomcat перестанут принимать запросы на сетевом уровне. Undertow будет принимать запросы, но сразу же выдавать ответ "сервис недоступен" (503).

Для плавного завершения работы при использовании Tomcat требуется версия Tomcat 9.0.33 или более поздняя.

Чтобы активировать режим плавного завершения работы, сконфигурируйте свойство server.shutdown, как показано в следующем примере:

Properties
server.shutdown=graceful
Yaml
server:
  shutdown: "graceful"

Чтобы настроить период времени ожидания, сконфигурируйте свойство spring.lifecycle.timeout-per-shutdown-phase, как показано в следующем примере:

Properties
spring.lifecycle.timeout-per-shutdown-phase=20s
Yaml
spring:
  lifecycle:
    timeout-per-shutdown-phase: "20s"
Режим плавного завершения работы в вашей IDE может работать неправильным образом, если она не будет посылать надлежащий сигнал SIGTERM. Более подробную информацию см. в документации к вашей IDE.