【发布时间】:2019-06-20 11:50:22
【问题描述】:
如何在 Spring Boot 应用程序中为清理数据(例如线程局部变量)实现请求完成过程后的清理方法
我尝试使用ServletRequestListener.requestDestroyed api,但在请求完成后它没有被命中
【问题讨论】:
标签: java rest spring-boot httprequest thread-local
如何在 Spring Boot 应用程序中为清理数据(例如线程局部变量)实现请求完成过程后的清理方法
我尝试使用ServletRequestListener.requestDestroyed api,但在请求完成后它没有被命中
【问题讨论】:
标签: java rest spring-boot httprequest thread-local
一个可能的答案是您忽略了注册监听器。 Servlet javadocs 说:
为了接收这些通知事件,必须在 Web 应用程序的部署描述符中声明实现类,使用
WebListener进行注释,或者通过在ServletContext上定义的addListener方法之一进行注册。
可能还有其他方法可以使用 Spring 来实现;例如使用处理程序拦截器;见Remove ThreadLocal object within a Spring MVC website?
如果您使用的是普通 servlet(没有 Spring MVC 基础架构),另一种方法是在您的 servlet 的 service 方法或 doXxx 方法中进行清理。或者在 servlet 前面的 Filter 中。
【讨论】: