鉴于@RestController
如此:
@RestController
@Scope("session")
public class MyController {
@PreDestroy
public void onSessionDestroyed() {
// clean stuff up...
}
}
会话到期时会onSessionDestroyed()
被调用吗?
答案 0 :(得分:5)
是的,您的@PreDestroy
带注释的方法将在会话到期时被调用。不调用@PreDestroy注释方法的唯一范围是Prototype范围。
修改:添加一些有关其工作原理的详细信息 -
会话范围由SessionScope
类处理,该类在内部具有registerDestructionCallback
方法。现在,这个回调是通过DestructionCallbackBindingListener
触发的,@PostDestroy
是HttpSessionBindingListener,它监听会话到期并触发对相关范围bean的{{1}}方法的调用。