关于在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对象。

相关推荐
FSHOW几秒前
重新造轮子?HestJS:让 Hono 拥有 NestJS 的优雅
前端·javascript·后端
用户61204149221310 分钟前
C语言做的井字棋小游戏
c语言·后端·游戏
发仔12311 分钟前
MyBatis编写Neo4j查询时$与#的注意事项
后端
net93611 分钟前
基于Java+Springboot+Vue开发的在线蛋糕商城管理系统源码+运行
后端
maybe_12 分钟前
高并发系统40问
后端
回家路上绕了弯14 分钟前
Java双亲委派机制:从原理到实践的全面解析
java·后端
DBLens数据库管理和开发工具14 分钟前
100条常用SQL语句
后端
就是帅我不改15 分钟前
在项目中如何优雅地使用设计模式
后端·架构
radient16 分钟前
GoLang-pprof-案例实践及解析
后端·面试·性能优化
努力的小郑16 分钟前
亿级流量下的生死抉择:Apache BeanUtils vs MapStruct性能差距32倍!架构师选型指南
java·spring·apache