Spring IoC контейнер: настройка бинов, изящное завершение работы контейнера Spring IoC в не веб-приложениях
Этот пост относится только к не веб-приложениям. В веб-реализациях Spring ApplicationContext уже есть код, который корректно завершает работу контейнера Spring IoC при завершении работы соответствующего веб-приложения.
Если вы используете IoC-контейнер Spring в среде, не являющейся веб-приложением (например, в среде рабочего стола расширенного клиента), зарегистрируйте ловушку отключения в JVM. Это гарантирует плавное завершение работы и вызывает соответствующие методы уничтожения для ваших одноэлементных компонентов, чтобы освободить все ресурсы. Вы все еще должны правильно настроить и реализовать эти обратные вызовы уничтожения.
Чтобы зарегистрировать обработчик завершения работы, вызовите метод registerShutdownHook(), который объявлен в интерфейсе ConfigurableApplicationContext, как показано в следующем примере:
Java
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public final class Boot {
public static void main(final String[] args) throws Exception {
ConfigurableApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
// добавляем ловушку выключения (shutdown hook) для вышеуказанного контекста...
ctx.registerShutdownHook();
// приложение работает здесь...
// main метод завершается, ловушка вызывается до закрытия приложения...
}
}
Kotlin
import org.springframework.context.support.ClassPathXmlApplicationContext
fun main() {
val ctx = ClassPathXmlApplicationContext("beans.xml")
// добавляем ловушку выключения (shutdown hook) для вышеуказанного контекста...
ctx.registerShutdownHook()
// приложение работает здесь...
// main метод завершается, ловушка вызывается до закрытия приложения...
}
Читайте также:
- Spring IoC контейнер: настройка бинов, обратные вызовы при запуске и завершении работы
- Spring IoC контейнер: настройка бинов, методы инициализации и уничтожения по умолчанию
- Spring IoC контейнер: настройка бинов, объединение механизмов жизненного цикла
- Spring IoC контейнер: настройка бинов, обратные вызовы жизненного цикла
- Spring IoC контейнер: настройка бинов, обратные вызовы инициализации
- Spring IoC контейнер: настройка бинов, обратные вызовы разрушения
Комментарии
Отправить комментарий