多线程环境中使用MyBatis时避免出现没有token的问题

// 很重要,在多线程没有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);
 
 
    ………业务代码………
 
 
}

 

posted @ 2024-04-07 16:16  BooleanQ  阅读(65)  评论(0)    收藏  举报