1.启动器中添加@EnableAsync
2.在方法上添加@Async
3.子线程获取不到主线程的request,在主线程中添加一下代码,子主共享资源
ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
RequestContextHolder.setRequestAttributes(sra, true);
4.request中有文件类型,tomcat会在temp创建临时文件,主线程结束后会删除临时文件,所以子线程会获取不到文件,报java.io.FileNotFoundException: /tmp/tomcat。解决方法:
(1)主线程时在request中存入改文件的inputstream,即使主线程结束,子主共享资源,inputstream也不会消失。
(2)创建临时文件,使用IoUtils.copy(int,out)对临时文件进行复制。