// RequestAttributes对象设置为子线程共享
// 解决开启多线程时子线程获取不到主线程的request
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
RequestContextHolder.setRequestAttributes(attributes, true);
业务场景是这样的,我有一个流程处理功能,在结束节点的时候需要生成一个pdf。但是生成pdf是需要一定的时间(几秒)。如果写在结束方法中,用户体验相对不是很好,所以需要单独创建一个线程来解决这个问题。
在创建线程并在线程中执行方法后,发现会报一个空指针的错误,原因是调用主线程的接口request拿不到,所以会导致nullpointexception
增加如下两行即可解决子线程获取不到主线程request问题。