Есть ли у Spring процесс выключения для установки кода очистки? - PullRequest
17 голосов
/ 21 декабря 2011

Когда мое весеннее веб-приложение закрывается, есть ли событие, к которому я могу каким-либо образом подключиться, чтобы я мог выполнить некоторый код очистки для очистки некоторых пулов и т. Д.

Ответы [ 5 ]

30 голосов
/ 21 декабря 2011

Вы можете использовать следующее

  1. метод уничтожения , поскольку @ amir75 рекомендует

  2. @ PreDestroy аннотация

  3. Реализация DisposableBean и переопределение метода уничтожения.

Все подробности об этом можно найти в Одноразовые обратные вызовы .

6 голосов
/ 21 декабря 2011

Spring bean-компоненты имеют атрибут destroy-method, который будет вызываться при закрытии контекста.

<bean id="bean1" 
    destroy-method="stop"
    class="com.example.Bean" />

Чтобы закрыть его, необходимо вызвать метод close ():

http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/context/support/AbstractApplicationContext.html#close%28%29

(или просто закройте контейнер, если необходимо)

Надеюсь, это поможет ..

5 голосов
/ 28 января 2016

Основываясь на спецификации JSR-250, наилучшей практикой для использования в современных весенних приложениях является аннотация @PreDestroy, поскольку при использовании этого подхода вы отделите ваши бины от Spring.

4 голосов
/ 21 декабря 2011

Не для Spring способ справиться с этим - написать класс, который реализует ServletContextListener и выполнить очистку в его методе contextDestroyed.Вы добавили бы свой класс в качестве прослушивателя контекста в web.xml.

2 голосов
/ 06 сентября 2016

В соответствии с примером проекта Spring Boot logback, вы должны закрыть контекст для очистки системы журналирования: https://github.com/spring-projects/spring-boot/commit/10402a651f1ee51704b58985c7ef33619df2c110

Пример:

public static void main(String[] args) throws Exception {
        SpringApplication.run(SampleLogbackApplication.class, args).close();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...