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

相关推荐
x_feng_x2 分钟前
Java从入门到精通 - 常用API(一)
java·开发语言·python
钢铁男儿2 小时前
C# 类和继承(使用基类的引用)
java·javascript·c#
abcnull5 小时前
springboot配置mybatis debug的sql日志输出
spring boot·sql·mybatis
linweidong5 小时前
Go开发简历优化指南
分布式·后端·golang·高并发·简历优化·go面试·后端面经
敢敢变成了憨憨5 小时前
java操作服务器文件(把解析过的文件迁移到历史文件夹地下)
java·服务器·python
苇柠5 小时前
Java补充(Java8新特性)(和IO都很重要)
java·开发语言·windows
Lin_XXiang5 小时前
java对接bacnet ip协议(跨网段方式)
java·物联网
白总Server6 小时前
C++语法架构解说
java·网络·c++·网络协议·架构·golang·scala
咖啡啡不加糖6 小时前
雪花算法:分布式ID生成的优雅解决方案
java·分布式·后端
小杜-coding6 小时前
天机学堂(初始项目)
java·linux·运维·服务器·spring boot·spring·spring cloud