<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      SpringBoot之ThreadLocal保存請求用戶信息

      一、ThreadLocal概述

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

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

      (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 {
              //此處實際應(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

      posted @ 2024-05-30 09:02  [奮斗]  閱讀(926)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久精品国产亚洲AV瑜伽| 狠狠v日韩v欧美v| 99国精品午夜福利视频不卡99| 人妻夜夜添夜夜无码av| 国产毛a片啊久久久久久保和丸| 浦城县| 国产精品午夜福利免费看| 欧美黑人XXXX性高清版| 日韩一欧美内射在线观看| 亚洲日本中文字幕天天更新| 国产精品第二页在线播放| 中文字幕日韩精品亚洲一区| 久久久久久综合网天天| 亚洲国产良家在线观看| 无码国产偷倩在线播放| 亚洲精品无码av人在线观看| 波多野结衣av无码| 国产精品无遮挡又爽又黄| 亚洲国产精品成人无码区| 777天堂麻豆爱综合视频| 日本一级午夜福利免费区| 成人乱人乱一区二区三区| 国产99视频精品免费视频6| 亚洲国产超清无码专区| 国产96在线 | 亚洲| 国内揄拍国内精品人妻久久| 亚洲综合激情五月色一区| 亚洲欧美日韩综合久久| 国产精品中文字幕一区| 国产欧美日韩精品丝袜高跟鞋| 黑人精品一区二区三区不| 免费AV片在线观看网址| 成在线人视频免费视频| 综合人妻久久一区二区精品| 国产麻传媒精品国产av| 午夜福利偷拍国语对白| 久久精品国产精品第一区| 久久精品国产99麻豆蜜月| 亚洲日韩久久综合中文字幕| 久久99日本免费国产精品| 亚洲 校园 欧美 国产 另类|