这个也是一个工具类

场景:比如说我们需要在controller或者service或者dao层用到当前登陆人的信息。我们之前的做法,肯定是从session中取出来。然后哪里需要传哪里。这样很麻烦。这时候我们需要造一个工具类。目的是在任何地方都能获取到当前登陆人的信息。

 

在这里我们要用到一个对象  ThreadLocal  这个对象 这个类相当于一个map,但是这个类的key是当前的进程。所以说,一个这样类只能放一个对象。这里要注意一下。

为什么要用这样的一个类呢?因为这个类的特性,每个进程的是完全隔离的,避免高并发情况下发生一些错误(我也不知道啥错误,反正就是防止高并发,这个坑回来再填!!!ToDo~~)

 

1.RequestHolder.java
package com.mmall.common;

import com.mmall.model.SysUser;

import javax.servlet.http.HttpServletRequest;

public class RequestHolder {

    private static final ThreadLocal<SysUser> userHolder = new ThreadLocal<SysUser>();

    private static final ThreadLocal<HttpServletRequest> requestHolder = new ThreadLocal<HttpServletRequest>();

    public static void add(SysUser sysUser) {
        userHolder.set(sysUser);
    }

    public static void add(HttpServletRequest request) {
        requestHolder.set(request);
    }

    public static SysUser getCurrentUser() {
        return userHolder.get();
    }

    public static HttpServletRequest getCurrentRequest() {
        return requestHolder.get();
    }

    public static void remove() {
        userHolder.remove();
        requestHolder.remove();
    }
}
View Code

相关文章: