Атрибут DESTROY-METHOD Spring bean и веб-приложение "прототип" d bean - PullRequest
3 голосов
/ 11 мая 2010

Может заставить работать атрибут "destroy-method".

Во-первых, даже если я ввожу несуществующее имя метода в атрибут "destroy-method",

Инициализация Spring завершается нормально (уже странно!).

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

.Этого не происходит, он просто никогда не вызывается в моем случае.

Хотя после извлечения этого компонента я могу явно вызвать этот метод, и он выполняет свою работу.

Не могли бы вы объяснить, почему этот методникогда не вызывался в моем случае Spring 2.5?

ps Метод существует, он общедоступен и не имеет аргументов.

Кажется, это более сложная задача, чем я думал.

Проблема в том, что этот метод уничтожения вызывается всякий раз, когда контекст закрыт, и это редкий случай.

У меня такой вопрос:

Iесть веб-приложение.У меня есть bean-объект с прототипом.

Что мне нужно, так это то, что когда текущий сеанс закрывается, Spring вызывает этот метод уничтожения автоматически.

Я могу сделать это вручную, ноЕсть ли решение, как заставить Spring сделать эту работу?Он уничтожает bean-компонент после уничтожения сеанса. Может ли Spring вызвать метод этого bean-компонента перед его уничтожением?

ps Spring не управляет жизненным циклом компонентов-прототипов, поэтому Spring не уничтожает их:)

1 Ответ

8 голосов
/ 11 мая 2010

Контейнер Spring не управляет bean-компонентами-прототипами.

Фрагмент из справочной документации :

Таким образом, хотя инициализация методы обратного вызова жизненного цикла на всех объектах независимо от объема, в случай прототипов , настроенный обратные вызовы жизненного цикла уничтожения не называется.

Если возможно, попробуйте запрос или объем сеанса.

Когда HTTP-сессия в конце концов отброшен, боб, который ограничен этот конкретный сеанс HTTP также отбрасываются.

Кстати: область действия сеанса и запроса работает, только если вы используете веб-интерфейс ApplicationContext, например XmlWebApplicationContext

...