当前位置: 首页 > news >正文

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

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

  • 背景
  • 添加线程池Bean

背景

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

添加线程池Bean

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

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

相关文章:

  • 高级语言调用C接口(二)回调函数(3)C#
  • 智慧生态评估体系构建与三维可视化实践——基于多源数据融合的内蒙古风电场生态效应研究
  • 杰理10k3950温度测量
  • 3.数组(随想录)
  • C语言学习之sizeof函数和strlen函数
  • 【Code】《代码整洁之道》笔记-Chapter17-味道与启发
  • 云服务器和物理服务器有什么区别
  • 2025年3月,再上中科院1区TOP,“等级熵+状态识别、故障诊断”
  • 制作一款打飞机游戏教程6:射击优化
  • 【嵌入式八股5】C++:多线程相关
  • Python基础语法——注释和输入输出
  • Go 语言的 map 在解决哈希冲突时,主要使用了链地址法同时参考了开放地址法的思想即每个桶的 8个 key val对是连续的
  • 如何利用游戏盾提升在线游戏的安全性?
  • 2025 年蓝桥杯 Java B 组真题解析分享
  • 大模型平台Dify工作流高效调用Ragflow知识库,解决其原生知识库解析和检索能力不足的问题
  • 基于ssm的航空售票系统
  • by组态适用领域
  • Shell编程之函数与数组
  • 临床协调简历模板
  • python——学生管理系统
  • 海港负国安主场两连败,五强争冠卫冕冠军开始掉队
  • 美乌签署协议建立美乌重建投资基金
  • 国务院安委办、应急管理部进一步调度部署“五一”假期安全防范工作
  • 深观察丨从“不建议将导师挂名为第一作者”说开去
  • 国泰海通合并后首份业绩报告出炉:一季度净利润增逾391%
  • 五大国有银行明确将撤销监事会