SpringBoot--使用ThreadLocal保存每次请求的用户信息

时间:2025-02-28 06:58:28

原文网址:SpringBoot--使用ThreadLocal保存每次请求的用户信息_IT利刃出鞘的博客-****博客

简介

说明

本文介绍如何使用ThreadLocal保存每次请求的用户信息。

保存之后,后边的业务操作就可以获取(Controller或者Service都可以,只要在一个请求中)。

相关网址

也可以使用request的attribute保存每次请求的用户信息,见 :SpringBoot--使用attribute保存每次请求的用户信息_IT利刃出鞘的博客-****博客

代码

用户实体类

package ;

import ;

@Data
public class UserDTO {
    private Long userId;

    private String userName;
}

定义ThreadLocal 

package ;

import ;

public class UserThreadLocal {
    /**
     * 构造函数私有
     */
    private UserThreadLocal() {
    }

    private static final ThreadLocal<UserDTO> USER_INFO_THREAD_LOCAL = 
            new ThreadLocal<>();

    /**
     * 清除用户信息
     */
    public static void clear() {
        USER_INFO_THREAD_LOCAL.remove();
    }

    /**
     * 存储用户信息
     */
    public static void write(UserDTO userDTO) {
        USER_INFO_THREAD_LOCAL.set(userDTO);
    }

    /**
     * 获取当前用户信息
     */
    public static UserDTO read() {
        return USER_INFO_THREAD_LOCAL.get();
    }
}

保存属性

上边是文章的部分内容,为便于维护,全文已转移到此网址:SpringBoot-使用ThreadLocal保存每次请求的用户信息 - 自学精灵