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

SpringBoot中的ThreadLocal保存請求用戶信息的實(shí)例demo

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

一、ThreadLocal概述

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

二、具體代碼demo實(shí)現(xiàn)

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

@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 {
        //此處實(shí)際應(yīng)該根據(jù)header的token解析出用戶本處為了簡單,直接虛構(gòu)一個用戶
        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

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

相關(guān)文章

  • Windows編寫jar啟動腳本和關(guān)閉腳本的操作方法

    Windows編寫jar啟動腳本和關(guān)閉腳本的操作方法

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

    java9新特性Reactive?Stream響應(yīng)式編程?API

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

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

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

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

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

    springboot如何重定向攜帶數(shù)據(jù) RedirectAttributes

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

    逆序?qū)栴}(Java實(shí)現(xiàn))歸并詳解

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

    深入解析Java的Hibernate框架中的一對一關(guān)聯(lián)映射

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

    使用Java 8中的Lambda表達(dá)式實(shí)現(xiàn)工廠模式

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

    Eclipse+Java+Swing+Mysql實(shí)現(xiàn)電影購票系統(tǒng)(詳細(xì)代碼)

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

    淺談java Properties類的使用基礎(chǔ)

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

最新評論

江陵县| 汕头市| 德清县| 永仁县| 海晏县| 宣武区| 崇文区| 石阡县| 大关县| 独山县| 新丰县| 昌图县| 德格县| 盐源县| 黄石市| 凤城市| 丹寨县| 盐城市| 北安市| 江华| 江安县| 宁海县| 清水河县| 安塞县| 崇义县| 循化| 宜君县| 河池市| 饶阳县| 陆河县| 扎赉特旗| 普定县| 新乐市| 南昌县| 大埔区| 北宁市| 嘉祥县| 离岛区| 孙吴县| 桐庐县| 镇安县|