异步子线程共享主线程reqeust
应用背景
在springboot项目中,使用RequestContextHolder获取reqeust信息,开发一个异步接口时发现子线程在主线程结束后获取不到request,导致调用微服务接口报以下错误信息:
解决方法
开启线程之前,设置servletRequestAttributes子线程共享
ServletRequestAttributes servletRequestAttributes
= (ServletRequestAttributes
) RequestContextHolder
.getRequestAttributes();
RequestContextHolder
.setRequestAttributes(servletRequestAttributes
, true);
HttpServletRequest request
= servletRequestAttributes
.getRequest();