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.mzph.cn/news/886798.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多线程--常见锁策略--Java

目录 一、悲观锁VS乐观锁 1.悲观锁 2.乐观锁 二、重量级锁VS轻量级锁 1.重量级锁 2.轻量级锁 三、自旋锁 1.自旋锁概念 四、公平锁VS非公平锁 1.公平锁 2.非公平锁 3.注意 五、可重入锁和不可重入锁 六、读写锁 1.线程对于数据的访问方式 注意:以下讲…

Vue和Vue-Element-Admin(十四):vue3.x与vue2区别分析

目录 vue3.x组合式api vue2 定义属性和方法 vue3 定义属性和方法 router 使用的区别 vue2.x router使用 定义router 在main.js中引入router 在vue中使用 vue3.x使用router 定义router 在main.js中引用 在vue中使用router 定义全局方法,变量 vue2.x定义全局方法 …

将大模型生成数据存入Excel,并用增量的方式存入Excel

将大模型生成数据存入Excel,并用增量的方式存入Excel 1. 需求与要解决的问题2. 代码3. 部分代码分析 1. 需求与要解决的问题 首先就是大模型对话特别耗时,所以通过需要异步执行。 其次是中间对话会有终端或像死锁的那种情况,循环不再继续&am…

基于YOLOv8深度学习的医学影像阿尔兹海默症检测诊断系统研究与实现(PyQt5界面+数据集+训练代码)

阿尔茨海默症(Alzheimer’s disease)是一种常见的神经退行性疾病,主要表现为记忆丧失、认知能力下降以及行为和人格改变。随着全球老龄化问题的加剧,阿尔茨海默症的发病率也在逐年上升,给患者及其家庭带来了巨大的经济…

鸿蒙学习生态应用开发能力全景图-鸿蒙开发套件(2)

文章目录 1、HarmonyOS 设计套件2、开发套件3、测试套件3.1测试标准3.2测试工具4、运维套件4.1上架分发测试能力4.2运维分析1、HarmonyOS 设计套件 Harmony Design 是面向全场景智能体验的设计系统,致力于构建一个和谐的数字世界,其秉承万物归一、和谐共生、衍生万物的设计理…

记一次 MongoDB 选主问题的解决及分析

目录 一、副本集构成 二、问题发生与解决 三、问题分析 1. 为何触发重新选举 2. 主何时被认为已失效 3. 选主过程 4. 关于候选节点(Candidate Node) (1)候选节点的定义 (2)候选节点的产生条件 &a…

iOS逆向入门:使用theos注入第三方依赖库

背景 theos是一个跨平台的软件开发框架,常用于管理,开发和部署iOS项目,同时也是开发iOS越狱插件的主要工具。和MonkeyDev不同的是,它不依赖于xcode,可以在多个操作系统上运行。一个完整的iOS越狱开发流程包括&#xf…

mysql8.4+mysql router读写分离

以下为容器环境内搭建 准备工作: 拉取镜像: 镜像版本mysql8.4container-registry.oracle.com/mysql/community-router8.4 下载mysql_shell mysql-shell-9.0.1-linux-glibc2.17-x86-64bit.tar.gz 下载地址: https://downloads.mysql.com/archives/shell/ 参考 这里对这篇文章…

STM32电源管理—实现低功耗

注: 本文是学习野火的指南针开发板过程的学习笔记,可能有误,详细请看B站野火官方配套视频教程(这个教程真的讲的很详细,请给官方三连吧) 在响应绿色发展的同时,在很多应用场合中都对电子设备的功…

【FPGA开发】AXI-Stream总线协议解读

文章目录 AXI-Stream概述协议中一些定义字节定义流的定义 数据流类别字节流连续对齐流连续不对齐流稀疏流 协议的信号信号列表 文章为个人理解整理,如有错误,欢迎指正! 参考文献 ARM官方手册 《IHI0051B》 AXI-Stream概述 协议中一些定义 A…

LogViewer NLog, Log4Net, Log4j 文本日志可视化

LogViewer 下载 示例&#xff1a;NLog文本日志可视化软件&#xff0c;并且能够实时监听输出最新的日志 nlog.config 通过udp方式传输给LogViewer (udp://ip:port) <?xml version"1.0" encoding"utf-8" ?> <nlog xmlns"http://www.nlog-…

ES-针对某个字段去重后-获取某个字段值的所有值

针对上面表的数据&#xff0c;现在想根据age分组&#xff0c;并获取每个分组后的name有哪些(去重后)。 select age, GROUP_CONCAT(DISTINCT(name)) from testtable group by age ; 结果&#xff1a; 如果想要增加排序&#xff1a; SELECT age, GROUP_CONCAT(DISTINCT name)…

LabVIEW三针自动校准系统

基于LabVIEW的智能三针自动校准系统采用非接触式激光测径仪对标准三针进行精确测量。系统通过LabVIEW软件平台与硬件设备的协同工作&#xff0c;实现了数据自动采集、处理及报告生成&#xff0c;大幅提高了校准精度与效率&#xff0c;并有效降低了人为操作误差。 一、项目背景…

流程图图解@RequestBody @RequestPart @RequestParam @ModelAttribute

RequestBody 只能用一次&#xff0c;因为只有一个请求体 #mermaid-svg-8WZfkzl0GPvOiNj3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-8WZfkzl0GPvOiNj3 .error-icon{fill:#552222;}#mermaid-svg-8WZfkzl0GPvOiNj…

【机器学习】机器学习中用到的高等数学知识-7.信息论 (Information Theory)

熵 (Entropy)&#xff1a;用于评估信息的随机性&#xff0c;常用于决策树和聚类算法。交叉熵 (Cross-Entropy)&#xff1a;用于衡量两个概率分布之间的差异&#xff0c;在分类问题中常用。 信息论作为处理信息量和信息传输的数学理论&#xff0c;在机器学习中具有广泛的应用。…

猎板PCB罗杰斯板材的应用案例

以下是几个猎板 PCB 与罗杰斯板材结合的具体案例&#xff1a; 案例一&#xff1a;5G 通信基站天线 PCB 在 5G 通信基站的天线系统中&#xff0c;对高频信号的传输和处理要求极高。猎板 PCB 采用罗杰斯板材&#xff0c;凭借其稳定的低介电常数&#xff08;如 RO4003C 板材&…

解读InnoDB数据库索引页与数据行的紧密关联

目录 一、快速走进索引页结构 &#xff08;一&#xff09;整体展示说明 &#xff08;二&#xff09;内容说明 File Header&#xff08;文件头部&#xff09; Page Header&#xff08;页面头部&#xff09; Infimum Supremum&#xff08;最小记录和最大记录&#xff09; …

【UNIAPP】uniapp版图片压缩工具

二次封装的uniapp版本图片压缩、上传工具&#xff0c;支持全端&#xff08;H5、小程序、APP&#xff09; 新建文件&#xff1a;file-util.js class FileUtil {/*** [文件上传]* param {[object]} fileObj [图片地址]* param {[object]} formData [参数]* param {[str…

Python去除图像白色背景

使用Pillow去除图像背景 安装依赖&#xff1a; pip install pillow 实现步骤&#xff1a; 使用Pillow库加载图像&#xff0c;并将其转换为RGBA模式&#xff0c;以支持透明度。遍历图像的每个像素&#xff0c;检查其红色、绿色和蓝色值是否都高于预设的阈值。对于被视为白色…

Spring Cache之本地缓存注解@Cacheable,@CachePut,@CacheEvict使用

*使用前需要在启动类上添加一个注解&#xff1a;EnableCaching 先说一下SpringCache是不支持灵活的缓存时间设置的&#xff0c;但可以自己实现。且不支持集群&#xff0c;因为是缓存到每台机器上&#xff0c;除非所有机器都有缓存。 所以使用场景一般是数据量较小的单机服务。…