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

ThreadLocal工具类

ThreadLocal工具类

ThreadLocalUtil.java

public class ThreadLocalUtil {static final ThreadLocal THREAD_LOCAL = new ThreadLocal();public static <T> T get() {return (T) THREAD_LOCAL.get();}public static void set(Object value) {THREAD_LOCAL.set(value);}public static void remove() {THREAD_LOCAL.remove();}
}

ThreadLocal应用

配合拦截器使用
LoginInterceptor.java

import java.util.Map;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;import com.itheima.utils.JwtUtil;
import com.itheima.utils.ThreadLocalUtil;@Component
public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {String token = request.getHeader("Authorization");ThreadLocalUtil.set(token);try {Map<String, Object> claims = JwtUtil.parseToken(token);return true;} catch (Exception e) {response.setStatus(401);return false;}}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)throws Exception {ThreadLocalUtil.remove();}
}

拦截器注意注册
WebConfig.java

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;import com.itheima.interceptors.LoginInterceptor;@Configuration
public class WebConfig implements WebMvcConfigurer {@AutowiredLoginInterceptor loginInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(loginInterceptor).excludePathPatterns("/user/login", "/user/register");}
}

业务类内调用(比如controller层)

......@GetMapping("/userInfo")public Result<User> userInfo() {Map<String, Object> map = ThreadLocalUtil.get();String username = (String) map.get("username");User user = userService.findByUsername(username);return Result.suc(user);}
......
http://www.lryc.cn/news/284104.html

相关文章:

  • 【c语言】扫雷(上)
  • Java读取制表符文本转换为JSON
  • 从C到C++:向面向对象过渡的技巧与诀窍
  • Vue3中动态组件使用
  • kubernetes工作负载-DamonSet
  • zabbix其他配置
  • 蓝桥杯备战 每日一题 (2)
  • GetShell的姿势
  • workflow源码解析:ThreadTask
  • 为何谷歌强制要求安装ssl证书?
  • 【刷题】 leetcode 2 .两数相加
  • Webpack5入门到原理2:基本使用
  • 企业微信上传临时素材errcode:44001,errmsg:empty media data
  • Docker技巧汇总
  • 学习使用微信小程序实现智能名片电子名片功能代码
  • 学习响应式编程中遇到的奇奇怪怪的问题
  • 前端常用js、css效果
  • Modern C++ 条件变量
  • 免费chartGPT网站汇总--
  • 关于C#中的async/await的理解
  • docker硬件交互 _ROS2
  • JS的数据类型和运算符
  • CSS实现平行四边形
  • 第11章 GUI Page500~504 步骤三十二:打开画板文件02
  • 【ROS2】ROS2使用C++实现简单服务端
  • WAF攻防相关知识点总结1--信息收集中的WAF触发及解决方案
  • 行云部署前端架构解析-前言 | 京东云技术团队
  • git提交代码到远端仓库的方法详解
  • 基于网络爬虫的天气数据分析
  • Javaweb之SpringBootWeb案例员工管理之删除员工的详细解析