问题描述
main方法开启异步处理

service使用异步注解

springSecurity 获取认证信息返回null

问题原因

SpringSecurity 是线程绑定的 异步处理是重新new一个线程进行业务处理
所以说 新线程里是没有 认证信息的
解决方案

需要重写AsyncConfigurer 使用SpringSecurity 的 装饰线程池 这样就可以携带认证信息了
@Configuration
public class AsyncConfig extends AsyncConfigurerSupport {
@Override
public Executor getAsyncExecutor() {
return new DelegatingSecurityContextExecutorService(Executors.newFixedThreadPool(5));
}
}




