Как предотвратить уничтожение одноэлементного компонента при обновлении ApplicationContext - PullRequest
1 голос
/ 14 июня 2011

У меня есть одноэлементный компонент, который уничтожается при обновлении ApplicationContext.Этот bean-компонент является реестром сеансов, который отслеживает сеансы (дух).Я использую обновление из ApplicationContext, чтобы получить новую конфигурацию после первоначальной настройки моего приложения.Однако SessionRegistry НЕ следует уничтожать, так как сам сеанс не закончился.Таким образом, мне нужно исключить SessionRegistry из бессмысленного уничтожения, вызванного обновлением ApplicationContext.Есть ли достаточно простой способ сделать это, или я должен реализовать свою собственную версию ApplicationContext и перекодировать его методы?

РЕДАКТИРОВАТЬ: Итак, я закончил тем, что переопределил регистрацию сессий, чтобы сделать настоящий синглтонполучение всех сеансов из реестра сеансов, удаление реестра в качестве списка в виде контекста приложения, а затем добавление сеансов обратно после восстановления реестра.

1 Ответ

1 голос
/ 14 июня 2011

Полагаю, вы можете использовать метод @PreDestroy для передачи текущего состояния в поле static и прочитать это поле в @PostConstruct для восстановления данных компонента.

Обратите внимание, что бобы весны являются одноэлементными в контексте. Если контекст умирает, бин умирает. И бин может иметь несколько экземпляров, если существует несколько контекстов. Отсюда и использование static, что является «более синглтоном».

...