需求1:
1、实现对登陆用户身份信息的获取
2、每个微服务都需要获取这个请求头信息,如何实现?
需求分析:
- 在每个微服务都编写一个SpringMVC的拦截器:HandlerInterceptor
- 在拦截器中获取请求头中的authorization信息,也就是userId,并保存到ThreadLocal中
- 在后续的业务中,可以直接从ThreadLocal中获取userId
思路实现分析:
解决线程安全的问题:
1. 加锁:让多线程在同一时刻变成单线程运行
2.ThreadLocal:实现线程不共享,将用户信息存到ThreadLocal中
1、定义一个工具类,把ThreadLocal封装成一个静态方法
//ThreadLocal的工具类,封装了set、get、remove方法
public class UserHolder {
//静态常量----把tl暴露出去
private static final ThreadLocal<Long> tl = new ThreadLocal<>();
//静态调取,别人调用时就不需要new对象了
public static void setUser (Long userId){