是否有"Spring 3 MVC方式"来收听结束会话事件?

Jua*_*ero 5 java session spring servlets spring-mvc

我希望在用户会话结束时删除一些临时文件.与文件关联的信息存储在用注释的对象中@SessionAttributes.

我发现处理这个问题的唯一方法是创建一个HttpSessionListener.

是否有更高级别,简化,Springy方式来收听会话结束事件,我可以轻松获取带注释的对象?

chr*_*cnm 6

您很可能需要创建一个HttpSessionListener.

另一个stackoverflow答案:

在Spring 3/Spring Security 2.0.5中检测会话超时

还有关于如何将spring bean加载到其中的示例:

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


Boz*_*zho 6

HttpSessionListener与spring bean 一起使用的两个选项:

第一个是用来WebApplicationContextUtils.getRequiredApplicationContext(servletContext)获取servlet上下文.从那里你有两个子选项:

  • 使用 getBean(..)
  • 如果你想使用@Autowired/ @Inject使用getAutowireCapablyBeanFactory().autowireBean(this).您只需执行一次(检查字段是否为null),因为侦听器是单例.

第二个选项是在侦听器上使用AspectJ@Configurable.