java - 应该实现并使用哪个 HandlerInterceptorAdapter 方法来清除 ThreadLocal?
问题描述
我已经编写了 HandlerInterceptorAdapter 的实现。它将一些特定于请求的数据放在 ThreadLocal 中。因为线程被重新用于新请求,所以在处理请求时必须删除放在 ThreadLocal 中的数据。我应该实现哪个 HandlerInterceptorAdapter 方法来清除它?我看到有两个选项,postHandle 和 afterCompletion。我需要保证 ThreadLocal 中的数据被删除。
解决方案
使用afterCompletion
. 任何结果都会调用它
请求处理完成后的回调,即渲染视图后。将在处理程序执行的任何结果上调用,从而允许适当的资源清理。
参考
笔记
- 如果您要从中返回
false
,preHandle
则应在预句柄本身中清理本地线程,因为这false
意味着您已经处理了响应,因此postHanlde()
或afterCompletion
不会被调用
推荐阅读
- c# - 为什么我能够将 x64 程序集加载到 AnyCPU Prefer 32 位可执行文件中?
- python - 什么时候创建单个大表比访问列表的单个文件更有意义?
- node.js - 为什么 npm i 安装了很多额外的文件?
- c# - 如何同时使用多个 TSocketTransport?
- android - 允许 Firebase 用户也可以使用 Twitter 进行身份验证
- java - 为什么我的 android 应用程序一直在模拟器中停止?
- r - 使用 ggplot(Box 和 Whisker 类型)在条形图顶部绘制线条
- django-allauth - django allauth:向注册表单添加更多字段
- python - Pygame:font.render() 给出“TypeError:无效的前景 RGBA 参数”
- python-3.x - 生产服务器上的Django(nginx + gunicorn),文件更改后,有时会显示更改,有时不会显示