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

相关推荐
itjinyin几秒前
SpringBoot + vue 管理系统
vue.js·spring boot·后端
IT_陈寒5 分钟前
SpringBoot 项目启动慢?这5个优化技巧让你的应用快50%
前端·人工智能·后端
u0133945275 分钟前
How to Run sample.war in a Tomcat Docker Container
java·docker·tomcat
splage8 分钟前
Spring Framework 中文官方文档
java·后端·spring
洋不写bug16 分钟前
Java线程(二):线程特点、状态、终止开始控制(
java·开发语言
sonnet-102921 分钟前
拓扑排序的实现
java·c语言·开发语言·笔记·算法
晨非辰27 分钟前
Linux终端输出哲学:从回车换行到进度条实战,掌握缓冲区刷新与ANSI控制,告别输出延迟焦虑
linux·运维·服务器·c++·人工智能·后端·自动化
彭于晏Yan27 分钟前
高并发系统缓存更新策略:四种方案深度剖析与最优选择
spring boot·redis·缓存
不想看见40430 分钟前
Min Stack栈和队列--力扣101算法题解笔记
java·笔记·leetcode