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());