给定一个@RestController像这样:
@RestController
@RestController @Scope("session") public class MyController { @PreDestroy public void onSessionDestroyed() { // clean stuff up... } }
onSessionDestroyed()会话到期时会被调用吗?
onSessionDestroyed()
是的,您的带@PreDestroy注释的方法将在会话到期时被调用。不调用@PreDestroy注释方法的唯一作用域是原型作用域。
@PreDestroy
编辑 :添加更多有关此工作原理的详细信息-
会话范围由内部SessionScope具有registerDestructionCallback方法的类 处理。现在,该回调通过HttpSessionBindingListener触发DestructionCallbackBindingListener,该HttpSessionBindingListener侦听会话到期并触发@PostDestroy对相关范围bean的方法的调用。
SessionScope
registerDestructionCallback
DestructionCallbackBindingListener
@PostDestroy