Как уничтожить бины в правильном порядке (используются сеансовые и одноэлементные области)? - PullRequest
0 голосов
/ 01 октября 2018

Я занимаюсь разработкой веб-приложения для Spring с двумя типами областей действия компонентов - синглтоном и сеансом.Бины уровня сеанса используют различные сервисы, предоставляемые синглетонами.Один из этих сервисов отвечает за очистку файлов от сессии пользователя.Это работает правильно при нормальном использовании, но не работает, когда приложение закрывается.Бины уровня сессии уничтожаются ПОСЛЕ синглетонов.Это означает, что служба запроса сессионного компонента уже уничтожена.

Требуемый порядок уничтожения компонента для моего приложения:

  • Объекты сессионной области;
  • Объекты Singleton.

Я уже пробовал аннотацию DependsOn для описания зависимостей, но она не работает так, как мне нужно.С помощью аннотации (также с @Order) я могу контролировать порядок создания и уничтожения только внутри одноэлементных компонентов.

Кроме того, моя конфигурация веб-приложения полностью основана на аннотациях.

1 Ответ

0 голосов
/ 22 октября 2018

Мой обходной путь для этого - создание службы диспетчера сеансов.Эта служба отслеживает сеансы и при событии @PreDestroy делает недействительными все зарегистрированные сеансы, что уничтожает все объекты сессий.Теперь все хорошо очищается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...