当前位置: 首页 > news >正文

ThreadLocal作一个缓存工具类

1、工具类

import java.util.HashMap;
import java.util.Map;public class ThreadLocalUtil {// 使用Map存储多类型数据private static final ThreadLocal<Map<String, Object>> CONTEXT_HOLDER = new ThreadLocal<>();// 存储数据public static void set(String key, Object value) {Map<String, Object> map = CONTEXT_HOLDER.get();if (map == null) {map = new HashMap<>();CONTEXT_HOLDER.set(map);}map.put(key, value);}// 获取数据public static <T> T get(String key, Class<T> clazz) {Map<String, Object> map = CONTEXT_HOLDER.get();if (map == null) return null;return clazz.cast(map.get(key));}// 清理数据public static void remove() {CONTEXT_HOLDER.remove();}}

2、请求结束后清除缓存,防止内存泄露


import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@Component
public class ThreadLocalInterceptor implements HandlerInterceptor {@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {ThreadLocalUtil.remove(); // 请求结束清理数据}}

3、将拦截器添加到Spring Boot当中

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class WebConfig implements WebMvcConfigurer {@Autowiredprivate ThreadLocalInterceptor threadLocalInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(threadLocalInterceptor);}
}

相关文章:

  • 超小多模态视觉语言模型MiniMind-V 训练
  • OV7670连接STM32F407VET
  • Java迭代器知识点详解
  • 从编程助手到AI工程师:Trae插件Builder模式实战Excel合并工具开发
  • 在CentOS系统上部署GitLabRunner并配置CICD自动项目集成!
  • 《算法导论(第4版)》阅读笔记:p86-p90
  • Windows逆向工程提升之二进制分析工具:HEX查看与对比技术
  • 自制操作系统day4(c指针)(指针和数组)(CLI和STI)(EFLAGS)
  • 力扣刷题Day 50:接雨水(42)
  • 你的it管理员已经限制对此应用一些区域的访问
  • MySQL进阶篇-InnoDB引擎(超细)
  • MySQL死锁:面试通关“三部曲”心法
  • Linux的权限问题
  • 【SPIN】PROMELA语言编程入门同步机制(SPIN学习系列--4)
  • std::ranges::iota
  • R²AIN SUITE 亮相第九届智能工厂高峰论坛
  • [CSS3]属性增强2
  • 卷积神经网络中的局部卷积:原理、对比与应用解析
  • PHP 实现连续子数组的最大和、整数中1出现的次数
  • [ 计算机网络 ] | 宏观谈谈计算机网络
  • 实验楼编程网站/怎么设计一个网页
  • 网站 云建站/外链怎么做
  • 网站制作的收费/网站排名怎么做上去
  • 怎么看网站后台什么语言做的/武汉seo首页优化技巧
  • 做聊天网站的视频教程/推广营销是什么
  • 彩票网站开发系统/域名注册 万网