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

2024-01-03

Given a @RestController像这样:

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

Would onSessionDestroyed()会话过期时被调用?


是的,你的@PreDestroy带注释的方法将在会话到期时被调用。唯一不调用 @PreDestroy 注解方法的范围是 Prototype 范围。

Edit:添加更多关于其工作原理的细节 -

会话范围由一个处理SessionScope类有一个registerDestructionCallback内部方法。现在这个回调是通过DestructionCallbackBindingListener这是一个HttpSessionBindingListener http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpSessionBindingListener.html它监听会话过期并触发调用@PostDestroy相关作用域 bean 的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

会话范围的 Spring MVC 控制器上的 @PreDestroy 的相关文章

随机推荐