最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot中的ThreadLocal保存請求用戶信息的實例demo

 更新時間:2024年05月30日 09:39:35   作者:奮--斗  
線程局部變量,創(chuàng)建一個線程變量后,針對這個變量可以讓每個線程擁有自己的變量副本,每個線程是訪問的自己的副本,與其他線程的相互獨立,本文介紹SpringBoot中的ThreadLocal保存請求用戶信息,需要的朋友可以參考下

一、ThreadLocal概述

線程局部變量,創(chuàng)建一個線程變量后,針對這個變量可以讓每個線程擁有自己的變量副本,每個線程是訪問的自己的副本,與其他線程的相互獨立。

二、具體代碼demo實現

(1)創(chuàng)建user實例對象

@Data
public class UserDTO {
    private Long userId;
    private String UserName;
}

(2)創(chuàng)建UserThreadLocal對象

public class UserThreadLocal {
    private UserThreadLocal(){};
    private static final ThreadLocal<UserDTO> USER_DTO_THREAD_LOCAL = new ThreadLocal<>();
    /**
     * 清除信息
     */
    public static void clear(){
        USER_DTO_THREAD_LOCAL.remove();
    }
    /**
     * 保存用戶信息
     * @param userDTO
     */
    public static void set(UserDTO userDTO){
        USER_DTO_THREAD_LOCAL.set(userDTO);
    }
    public static UserDTO getCurrentUser(){
       return USER_DTO_THREAD_LOCAL.get();
    }
}

(3)創(chuàng)建用戶攔截器

@Component
public class UserInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //此處實際應該根據header的token解析出用戶本處為了簡單,直接虛構一個用戶
        UserDTO userDTo = new UserDTO();
        userDTo.setUserId(10001L);
        userDTo.setUserName("張三");
        UserThreadLocal.set(userDTo);
        return true;
    }
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        UserThreadLocal.clear();
    }
}

  (4) 注冊用戶攔截器

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new UserInterceptor());
    }
}

(5)編寫測試接口

@RequestMapping("test")
@RestController
public class TestController {

    @GetMapping("get")
    public UserDTO getUser(){
        UserDTO currentUser = UserThreadLocal.getCurrentUser();
        System.out.println(currentUser);
        return currentUser;
    }
}

(6)效果展示

localhost:8080/test/get

到此這篇關于SpringBoot之ThreadLocal保存請求用戶信息的文章就介紹到這了,更多相關SpringBoot ThreadLocal保存請求用戶信息內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Windows編寫jar啟動腳本和關閉腳本的操作方法

    Windows編寫jar啟動腳本和關閉腳本的操作方法

    腳本文件,通常放入/bin目錄下,編寫啟動腳本需要保證能夠識別到對應的jar文件,其次需要保證能夠識別到/config中的配置文件信息,這篇文章主要介紹了Windows編寫jar啟動腳本和關閉腳本的操作方法,需要的朋友可以參考下
    2022-12-12
  • java9新特性Reactive?Stream響應式編程?API

    java9新特性Reactive?Stream響應式編程?API

    這篇文章主要為大家介紹了java9新特性響應式編程API的特點詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • 一篇文章徹底弄懂Java中二叉樹

    一篇文章徹底弄懂Java中二叉樹

    二叉樹是有限個節(jié)點的集合,這個集合可以是空集,也可以是一個根節(jié)點和兩顆不相交的子二叉樹組成的集合,其中一顆樹叫根的左子樹,另一顆樹叫右子樹,這篇文章主要給大家介紹了一篇文章如何徹底弄懂Java中二叉樹的相關資料,需要的朋友可以參考下
    2022-01-01
  • Spring?Boot讀取配置文件的五種方式小結

    Spring?Boot讀取配置文件的五種方式小結

    Spring?Boot?提供了靈活多樣的方式來讀取配置文件,這篇文章為大家介紹了5種常見的讀取方式,文中的示例代碼簡潔易懂,大家可以根據自己的需要進行選擇
    2025-04-04
  • springboot如何重定向攜帶數據 RedirectAttributes

    springboot如何重定向攜帶數據 RedirectAttributes

    這篇文章主要介紹了springboot如何重定向攜帶數據 RedirectAttributes,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 逆序對問題(Java實現)歸并詳解

    逆序對問題(Java實現)歸并詳解

    文章介紹了計算給定正整數序列中逆序對數量的方法,特別是使用歸并排序進行拆分和合并時統(tǒng)計逆序對,通過遞歸拆分序列,并在合并過程中統(tǒng)計逆序對數量,從而得到整個序列的逆序對總數,此方法能有效處理包含重復數字的序列
    2026-05-05
  • 深入解析Java的Hibernate框架中的一對一關聯映射

    深入解析Java的Hibernate框架中的一對一關聯映射

    這篇文章主要介紹了Java的Hibernate框架的一對一關聯映射,包括對一對一外聯映射的講解,需要的朋友可以參考下
    2016-01-01
  • 使用Java 8中的Lambda表達式實現工廠模式

    使用Java 8中的Lambda表達式實現工廠模式

    這篇文章主要給大家介紹了使用Java 8中的Lambda表達式實現工廠模式的相關資料,文中介紹的非常詳細,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-04-04
  • Eclipse+Java+Swing+Mysql實現電影購票系統(tǒng)(詳細代碼)

    Eclipse+Java+Swing+Mysql實現電影購票系統(tǒng)(詳細代碼)

    這篇文章主要介紹了Eclipse+Java+Swing+Mysql實現電影購票系統(tǒng)并附詳細的代碼詳解,需要的小伙伴可以參考一下
    2022-01-01
  • 淺談java Properties類的使用基礎

    淺談java Properties類的使用基礎

    下面小編就為大家分享一篇淺談java Properties類的使用基礎,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01

最新評論

宝鸡市| 秦皇岛市| 田东县| 沐川县| 崇信县| 竹北市| 四平市| 闽清县| 郧西县| 贺兰县| 徐州市| 云霄县| 曲阜市| 西和县| 佛冈县| 平武县| 黎川县| 叶城县| 石门县| 龙海市| 肃北| 长顺县| 罗定市| 松原市| 濮阳县| 黄浦区| 遵义市| 合阳县| 杭州市| 夏邑县| 六枝特区| 洞口县| 黄骅市| 九江市| 宜城市| 津市市| 铜梁县| 于都县| 瓮安县| 宣汉县| 上蔡县|