TransmittableThreadLocal 获取当前登录人
时间: 2023-12-15 08:32:53 浏览: 87
获取登陆者相关信息
TransmittableThreadLocal是一个线程本地变量,它可以在多个线程中存储不同的值。在多线程环境下,每个线程都有自己的线程栈,线程栈中的变量只能被当前线程访问。TransmittableThreadLocal可以让你在多个线程中共享变量,而不需要担心线程安全问题。在获取当前登录人的场景中,可以将当前登录人的信息存储在TransmittableThreadLocal中,然后在需要获取当前登录人的地方获取该信息即可。
下面是一个示例代码,演示如何使用TransmittableThreadLocal获取当前登录人:
```java
public class LoginUserContextHolder {
private static final ThreadLocal<SysUser> CONTEXT = new TransmittableThreadLocal<>();
public static void setUser(SysUser user) {
CONTEXT.set(user);
}
public static SysUser getUser() {
return CONTEXT.get();
}
public static void clear() {
CONTEXT.remove();
}
}
```
在上面的代码中,我们定义了一个LoginUserContextHolder类,该类中有三个方法:setUser、getUser和clear。setUser方法用于将当前登录人的信息存储在TransmittableThreadLocal中,getUser方法用于获取当前登录人的信息,clear方法用于清除当前登录人的信息。
使用示例:
```java
// 在登录成功后将当前登录人的信息存储在TransmittableThreadLocal中
LoginUserContextHolder.setUser(currentUser);
// 在需要获取当前登录人的地方获取该信息
SysUser currentUser = LoginUserContextHolder.getUser();
```
阅读全文