ThreadLocal是什么?
public T get() public void set(T value) public void remove()
1、創建用戶上下文實體類
import com.qianxiao.blog.dataobject.UserDO;
public class UserContext {
// 構造方法私有化
private UserContext(){};
private static final ThreadLocal<UserDO> context = new ThreadLocal<>();
/**
* 存放用戶信息
* @param userDO
*/
public static void set(UserDO userDO){
context.set(userDO);
}
/**
* 獲取用戶信息
* @return
*/
public static UserDO get(){
return context.get();
}
/**
* 清除當前線程內引用,防止內存泄漏
*/
public static void remove(){
context.remove();
}
}
2、攔截器中設置用戶信息
UserContext.set(userDO);
3、controller中獲取用戶信息
System.out.println("userData = " + UserContext.get());

