遇到的问题
最近实现一个需求,将审核入库的方法加进度条,所以使用到了异步线程。但是开启新的线程后,新的线程中获取不到原request对象。
最终的解决办法
- 方案一:将请求中的数据以入参的形式传入新开启的线程
适用于新线程不需要再将request中的信息传递到调用的子方法 - 方案二:在开启线程之前,将request的信息设置为子线程共享
适用于新线程需要再将request中的信息传递到调用的子方法
// 将request设置为子线程共享
ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
RequestContextHolder.setRequestAttributes(sra, true);
有问题欢迎切磋
原创文档,转载请注明出处