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

相关推荐
Kendra9191 分钟前
Docker 容器 - Dockerfile
java·docker·eureka
Auc2419 分钟前
Java 原生实现代码沙箱(OJ判题系统第1期)——设计思路、实现步骤、代码实现
java·开发语言·python
livemetee29 分钟前
netty单线程并发量评估对比tomcat
java·tomcat·netty
lyrhhhhhhhh29 分钟前
Spring框架(1)
java·后端·spring
熊猫的反手凶变直线34 分钟前
Java-Lambda 表达式
java·开发语言·windows·笔记
Super_man5418836 分钟前
k8s之service解释以及定义
java·开发语言·云原生·容器·kubernetes
fie888939 分钟前
Java中的控制流语句:if、switch、for、foreach、while、do-while
java·开发语言·python
找不到、了1 小时前
JDK8 HashMap红黑树退化为链表的机制解析
java·数据结构·链表
西洼工作室1 小时前
掌握单元测试:提升软件质量的关键步骤
java·单元测试
喝养乐多长不高2 小时前
Spring Web MVC基础理论和使用
java·前端·后端·spring·mvc·springmvc