引言:将用户信息存进线程并进行绑定。
以前的项目都是把用户信息存进redis,用户标识+token作为key,用的时候进行查询,今天同公司的大佬一同开发一个项目,发现他写的获取用户信息的工具类是把用户信息存进线程的,代码非常简洁。所以记录一下。
工具类
public class UserUtil {
//获取当前线程对象
public static ThreadLocal<UserInfo> userInfoThreadLocal = new InheritableThreadLocal<>();
//获取当前用户信息
public UserInfo getUser(){
return userInfoThreadLocal .get();
}
}
调用类
public class Test{
UserInfo user=new UserInfo//当前登录用户信息
//将当前用户信息存进线程绑定,后续用到的时候直接get即可。
UserUtil.userInfoThreadLocal.set(userInfo);
//其他地方获取用户信息的话 直接调用工具类
UserUtil.getUser();
}
从代码上就可以看出,短短几行代码就解决了获取当前用户信息的问题。当然只看这几行是不会明白为什么可以这样存储数据跟数据传递的。
可以参考:(https://blog.youkuaiyun.com/hewenbo111/article/details/80487252)进行理解!