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

Java使用ThreadLocal實(shí)現(xiàn)當(dāng)前登錄信息的存取功能

 更新時(shí)間:2023年02月21日 16:09:02   作者:曠世奇才李先生  
ThreadLocal和其他并發(fā)工具一樣,也是用于解決多線程并發(fā)訪問,下這篇文章主要給大家介紹了關(guān)于Java使用ThreadLocal實(shí)現(xiàn)當(dāng)前登錄信息的存取功能,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、使用ThreadLocal實(shí)現(xiàn)當(dāng)前登錄信息的存取

在項(xiàng)目中我們?cè)黾右粋€(gè)員工有一些信息是需要我們自己填入的,有一些信息不需要我們自己填寫,例如:創(chuàng)建時(shí)間,創(chuàng)建人等,那么這些事件我們通常就是使用實(shí)體類然后set相關(guān)屬性,但是我們可以使用MetaObjectHandler來(lái)將這些不要要我們自己穿的參數(shù)進(jìn)行默認(rèn)填充,但是創(chuàng)建人和更新人是獲取的當(dāng)前用戶登錄人。

我們都知道想要獲取當(dāng)前的登錄人就需要使用HttpServletRequest來(lái)獲取,但是我們字符串填充類沒有這個(gè),那么我們就可以使用ThreadLocal來(lái)實(shí)現(xiàn)當(dāng)前登錄信息的存取。

ThreadLocal的實(shí)現(xiàn)原理就是,一個(gè)線程里面有局部變量,我們可以利用局部變量來(lái)存取數(shù)據(jù),當(dāng)然我們必須保證是同一個(gè)線程這樣才能準(zhǔn)確的存儲(chǔ)和獲取數(shù)據(jù),在我們一個(gè)請(qǐng)求流程下來(lái)我們都使用的一個(gè)線程,所以這里我們就可以使用ThreadLocal來(lái)進(jìn)行信息的存取。

1,寫一個(gè)工具類用于存取用戶id

/**
 * @Author: KSQC
 * @Description: 基于ThreadLocal對(duì)登陸用戶信息進(jìn)行存儲(chǔ)和讀取
 * @Date: 2023/2/16 22:11
 */
public class BaseContext {
    private static ThreadLocal<Long> threadLocal = new ThreadLocal<>();

    public static void setCurrentId(Long id){
        threadLocal.set(id);
    }

    public static Long getCurrentId(){
        return threadLocal.get();
    }
}

2、在用戶登錄的時(shí)候我們?cè)谶^(guò)濾器中可以獲取用戶的id,這個(gè)時(shí)候我們將用戶id放入ThreadLocal中。

  //4、判斷登錄狀態(tài),如果已登錄,則直接放行
        if(request.getSession().getAttribute("employee") != null){
            log.info("用戶已登錄,用戶id為:{}",request.getSession().getAttribute("employee"));

            Long empId =  (Long) request.getSession().getAttribute("employee");
            BaseContext.setCurrentId(empId);

            filterChain.doFilter(request,response);
            return;
        }

然后在需要用到用戶id的地方進(jìn)行讀?。?/p>

 @Override
    public void insertFill(MetaObject metaObject) {
        log.info("公共字段自動(dòng)填充[insert]...");
        log.info(metaObject.toString());
        metaObject.setValue("createTime", LocalDateTime.now());
        metaObject.setValue("updateTime",LocalDateTime.now());
        metaObject.setValue("createUser",BaseContext.getCurrentId());
        metaObject.setValue("updateUser",BaseContext.getCurrentId());
    }

在上面的方法寫完成后,我們直接運(yùn)行程序,然后新增和修改員工就會(huì)進(jìn)入這些方法然后進(jìn)行字段填充操作。

二、總結(jié)

這里的相關(guān)內(nèi)容還沒有整理完畢,文章后面持續(xù)更新,建議收藏。

文章中涉及到的命令大家一定要像我一樣每個(gè)都敲幾遍,只有在敲的過(guò)程中才能發(fā)現(xiàn)自己對(duì)命令是否真正的掌握了。

到此這篇關(guān)于Java使用ThreadLocal實(shí)現(xiàn)當(dāng)前登錄信息的存取功能的文章就介紹到這了,更多相關(guān)Java ThreadLocal當(dāng)前登錄信息的存取內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在Java項(xiàng)目中實(shí)現(xiàn)CI/CD持續(xù)集成與持續(xù)部署

    在Java項(xiàng)目中實(shí)現(xiàn)CI/CD持續(xù)集成與持續(xù)部署

    這篇文章主要為大家介紹了在Java項(xiàng)目中實(shí)現(xiàn)CI/CD持續(xù)集成與持續(xù)部署詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • SpringBoot集成ActiveMQ的實(shí)戰(zhàn)全過(guò)程

    SpringBoot集成ActiveMQ的實(shí)戰(zhàn)全過(guò)程

    消息隊(duì)列中間件是分布式系統(tǒng)中重要的組件,主要解決應(yīng)用耦合、異步消息、流量削鋒等問題,實(shí)現(xiàn)高性能、高可用、可伸縮和最終一致性架構(gòu),是大型分布式系統(tǒng)不可缺少的中間件,這篇文章主要給大家介紹了關(guān)于SpringBoot集成ActiveMQ的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • Mybatis?XML配置文件實(shí)現(xiàn)增刪改查的示例代碼

    Mybatis?XML配置文件實(shí)現(xiàn)增刪改查的示例代碼

    本文主要介紹了Mybatis?XML配置文件實(shí)現(xiàn)增刪改查的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • Java中處理郵件附件的方法(本地文件和在線URL)

    Java中處理郵件附件的方法(本地文件和在線URL)

    這篇文章主要介紹了在Java中處理郵件附件的方法,針對(duì)本地文件和在線URL兩種附件來(lái)源,提供了兩種解決方案,并提供了下載文件和發(fā)送郵件的代碼示例,需要的朋友可以參考下
    2025-03-03
  • 散列表的原理與Java實(shí)現(xiàn)方法詳解

    散列表的原理與Java實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了散列表的原理與Java實(shí)現(xiàn)方法,詳細(xì)分析了散列表的原理,并結(jié)合實(shí)例形式分析了java實(shí)現(xiàn)散列表相關(guān)操作技巧,需要的朋友可以參考下
    2019-09-09
  • Java 漢字獲取拼音或首字母工具類代碼分析

    Java 漢字獲取拼音或首字母工具類代碼分析

    在本篇內(nèi)容里小編給大家分享的是一篇關(guān)于Java 漢字獲取拼音或首字母工具類知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以學(xué)習(xí)參考下。
    2021-06-06
  • Java之進(jìn)程和線程的區(qū)別

    Java之進(jìn)程和線程的區(qū)別

    這篇文章主要介紹了進(jìn)程與線程的區(qū)別,線程具有許多傳統(tǒng)進(jìn)程所具有的特征,而把傳統(tǒng)的進(jìn)程稱為重型進(jìn)程(Heavy—Weight Process),它相當(dāng)于只有一個(gè)線程的任務(wù),有感興趣的小伙伴可以參考閱讀本文
    2023-03-03
  • 詳解關(guān)于java文件下載文件名亂碼問題解決方案

    詳解關(guān)于java文件下載文件名亂碼問題解決方案

    這篇文章主要介紹了詳解關(guān)于java文件下載文件名亂碼問題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Java?SSM框架講解

    Java?SSM框架講解

    這篇文章主要介紹了什么是SSM框架,SSM框架是spring、spring?MVC?、和mybatis框架的整合,是標(biāo)準(zhǔn)的MVC模式。想進(jìn)一步了解的同學(xué)可以詳細(xì)參考本文
    2023-03-03
  • 淺談Java中static關(guān)鍵字的作用

    淺談Java中static關(guān)鍵字的作用

    這篇文章主要介紹了Java中static關(guān)鍵字的作用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評(píng)論

华池县| 三门峡市| 永川市| 黔东| 拉孜县| 灵台县| 始兴县| 湟中县| 郓城县| 岳普湖县| 长顺县| 丰镇市| 汪清县| 余干县| 赤水市| 探索| 沂水县| 鹿泉市| 当涂县| 樟树市| 莱芜市| 托克托县| 明溪县| 武义县| 微山县| 建湖县| 平乡县| 旬邑县| 壤塘县| 陈巴尔虎旗| 沂源县| 嫩江县| 太仓市| 贞丰县| 湖州市| 朝阳区| 永顺县| 镇沅| 防城港市| 偏关县| 五莲县|