Есть ли "Spring 3 MVC way" для прослушивания события окончания сеанса? - PullRequest
5 голосов
/ 06 марта 2012

Я хотел бы удалить некоторые временные файлы после завершения сеанса пользователя. Информация, связанная с файлами, хранится в объекте, помеченном @SessionAttributes.

Единственный способ справиться с этим - создать HttpSessionListener.

Существует ли более простой, упрощенный способ Springy для прослушивания события окончания сеанса, где я мог бы легко получить свой аннотированный объект?

Ответы [ 3 ]

6 голосов
/ 07 марта 2012

Два варианта использования HttpSessionListener с бобами:

Первое - использовать WebApplicationContextUtils.getRequiredApplicationContext(servletContext) для получения контекста сервлета. Оттуда у вас есть две подопции:

  • использовать getBean(..)
  • Если вы хотите использовать @Autowired / @Inject, используйте getAutowireCapablyBeanFactory().autowireBean(this). Вам придется сделать это только один раз (проверьте, являются ли поля null), потому что слушатель является одиночным.

Второй вариант - использовать AspectJ и @Configurable на слушателе.

6 голосов
/ 06 марта 2012

Скорее всего, вам потребуется создать HttpSessionListener.

Еще один ответ на стек:

Определение времени ожидания сеанса в Spring 3 / Spring Security 2.0.5

Также и пример того, как загрузить в него весенние бобы:

http://www.mkyong.com/spring/spring-how-to-do-dependency-injection-in-your-session-listener/

1 голос
/ 06 марта 2012

Не имеет прямого отношения, но может быть интересным проектом для просмотра.

https://github.com/shawnmclean/Idle.js

Удаление сеанса обычно происходит на стороне сервера, когда истекает срок сеанса (обычно 30 минут).Вышеуказанный проект позволяет обнаруживать поведение пользователя в интерфейсе.

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