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

SpringMVC跨线程获取requests请求对象(子线程共享servletRequestAttributes)和跨线程获取token信息

文章目录

  • 引言
  • I 跨线程共享数据
    • 跨线程获取requests请求对象
    • 基于org.slf4j.MDC存储共享数据
    • InheritableThreadLocal解决异步线程,无法获取token信息问题
  • II Feign 传递请求属性
    • feign 模块处理
    • 被调用方处理请求头
  • III 异步调用的方式
    • CompletableFuture
    • Async注解
    • Executors

引言

本文介绍了在SpringMVC中如何在跨线程环境下获取requests请求对象,主要探讨了RequestContextHolder和ThreadLocal的使用。在异步操作中,由于线程隔离,常规方式无法直接获取父线程的HttpServletRequest。解决方案包括使用RequestContextHolder的InheritableThreadLocal,以及封装线程池任务执行器来传递信息。同时,文章还讨论了ThreadLocal在存储token信息时的问题及其解决方案。

I 跨线程共享数据

跨线程获取requests请求对象

在开启子线程时,调用一下 RequestContextHolder.setRequestAttributes(requestAttributes, true);方法,将原本放在ThreadLocal对象中的属性放到了类型为InheritableThreadLocal的对象中,启动的子线程可以获取到父线程中的属性

  1. 异步调用,设置子线程共享请求属性
//异步调用,设置子线程共享
ServletRequestAttributes servletRequest

http://www.kler.cn/a/400466.html

相关文章:

  • Matlab单输入多输出之同时识别手写数字类别和倾斜角度
  • 用 Android Studio 从零开发一个多功能计算器应用
  • 集群聊天服务器(9)一对一聊天功能
  • 数据科学与SQL:如何计算排列熵?| 基于SQL实现
  • 10月回顾 | Apache SeaTunnel社区动态与进展一览
  • 【jvm】方法区的理解
  • 讨论大语言模型在学术文献应用中的未来与所带来的可能性和担忧
  • C++笔试面试题
  • leetcode 扫描线专题 06-leetcode.836 rectangle-overlap 力扣.836 矩形重叠
  • 无人机动力系统节能技术的未来发展趋势——CKESC电调小课堂12.1
  • Python 神经网络项目常用语法
  • C++---智能指针和内存泄露
  • 【网络安全 | 漏洞挖掘】邮件HTML注入
  • 群控系统服务端开发模式-应用开发-前端部门功能开发
  • 传奇996_25——ctrl+f11,ui标签,绘制自定义面板的参数
  • 学习大数据DAY61 宽表加工
  • 【惠州大亚湾】之维修戴尔服务器DELLR730XD
  • vue下载后端提供的文件/播放音频文件
  • Redis的缓存穿透、缓存雪崩、缓存击穿问题及有效解决方案
  • 初始Python篇(3)—— 列表