关于在Spring Boot + SpringSecurity工程中Sercurity上下文对象无法传递至新线程的问题解决

关于在Spring Boot + SpringSecurity工程中Sercurity上下文对象无法传递至新线程的问题解决

背景

OJ系统后端开发过程中,前端用户提交代码后,后端接收到请求开始对提交记录进行保存并开启一个新线程用于判题,但是由于开启了Mybatis-plus自动填充功能,在保存数据时需要从Sercurity上下文对象中取得UserDetail信息,由于新线程的SercurityConxt中的UserDetail信息为空导致空指针异常。最终通过Security自动传递解决问题

添加线程池Bean

java 复制代码
@Configuration
public class AsyncConfig implements AsyncConfigurer {
    @Override
    public Executor getAsyncExecutor() {
        // 使用 DelegatingSecurityContextExecutorService 包装线程池
        return new DelegatingSecurityContextExecutorService(Executors.newFixedThreadPool(5));
    }
}

添加后通过@Async注解开启的异步线程可在创建时获取到SercurityContext对象。

相关推荐
卓伊凡几秒前
复杂项目即时通讯从android 5升级android x后遗症之解决报错 #10 java.lang.NullPointerException-优雅草卓伊凡|
前端·后端
dl7432 分钟前
一文看懂spring扫描bean的过程
后端
柑木6 分钟前
密码学-基础理论-DiffieHellman密钥交换
后端·安全
_風箏7 分钟前
Zabbix【部署 05】 Docker部署Zabbix Server Agent Agent2 Web interface及 Java-Gate-Way
后端
平行绳8 分钟前
免费证书有效期越来越短了!本文教你设置自动更新证书,超详细!
后端·https
Seven9711 分钟前
剑指offer-22、从上往下打印⼆叉树
java
天行健的回响15 分钟前
ThreadLocal自学小记
后端
现在就干17 分钟前
从卡死到秒出:百万级数据导出优化实战
后端
一乐小哥19 分钟前
从 JDK 到 Spring,单例模式在源码中的实战用法
后端·设计模式
nppe620 分钟前
sequlize操作mysql小记
前端·后端