SpringBoot使用ThreadLocal線程上下文傳遞數據


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

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM