一尘不染

会话范围的Spring MVC控制器上的@PreDestroy

spring-mvc

给定一个@RestController像这样:

@RestController
@Scope("session")
public class MyController {
    @PreDestroy
    public void onSessionDestroyed() {
        // clean stuff up...
    }
}

onSessionDestroyed()会话到期时会被调用吗?


阅读 317

收藏
2020-06-01

共1个答案

一尘不染

是的,您的带@PreDestroy注释的方法将在会话到期时被调用。不调用@PreDestroy注释方法的唯一作用域是原型作用域。

编辑 :添加更多有关此工作原理的详细信息-

会话范围由内部SessionScope具有registerDestructionCallback方法的类
处理。现在,该回调通过HttpSessionBindingListener触发DestructionCallbackBindingListener,该HttpSessionBindingListener侦听会话到期并触发@PostDestroy对相关范围bean的方法的调用。

2020-06-01