// 很重要,在多线程没有token 下面三行可以解决 mybatis方法报错
// 1. 通过当前的 WebUtil.getRequest() 获取Servlet请求的属性
ServletRequestAttributes servletRequestAttributes = new ServletRequestAttributes(WebUtil.getRequest());
// 2. 将获取到的Servlet请求属性设置为当前线程的请求属性
RequestContextHolder.setRequestAttributes(servletRequestAttributes);
// 3. 再次获取当前线程的请求属性
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
// 4. 在一个新的线程中执行以下操作:
ThreadUtil.execute(() -> {
// 将上面获取到的请求属性再次设置为当前线程的请求属性
RequestContextHolder.setRequestAttributes(requestAttributes);
});
ServletRequestAttributes servletRequestAttributes = new ServletRequestAttributes(WebUtil.getRequest()); RequestContextHolder.setRequestAttributes(servletRequestAttributes); ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); ThreadUtil.execute(() -> { RequestContextHolder.setRequestAttributes(requestAttributes); ………业务代码……… }
标签:RequestContextHolder,ServletRequestAttributes,setRequestAttributes,token,线程,serv From: https://www.cnblogs.com/javaquan/p/18119304