这个也是一个工具类
场景:比如说我们需要在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(); } }