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

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.mrgr.cn/news/76396.html

相关文章:

  • ElasticSearch-全文检索(一)基本介绍
  • windows和git不区分文件名大小写问题
  • SQL中的时间类型:深入解析与应用
  • 华为云计算HCIE-Cloud Computing V3.0试验考试北京考场经验分享
  • PostgreSQL 页损坏如何修复
  • Sam Altman:年底将有重磅更新,但不是GPT-5!
  • 2:Vue.js 父子组件通信:让你的组件“说话”
  • 从0开始学习机器学习--Day26--聚类算法
  • uniapp微信登录的流程
  • 数据结构(基本概念及顺序表)
  • [JAVA]有关MyBatis环境配置介绍
  • docker busybox作为initContainers
  • 系统架构设计师:软件架构的演化和维护
  • 解决laravel框架生成的pdf过大的问题
  • Linux应用层学习——Day2(文件IO)
  • centos7安装Chrome使用selenium-wire
  • STM32单片机CAN总线汽车线路通断检测
  • uniapp 实现 ble蓝牙同时连接多台蓝牙设备,支持app、苹果(ios)和安卓手机,以及ios连接蓝牙后的一些坑
  • 【linux】进程等待与进程替换
  • Pytest-Bdd-Playwright 系列教程(9):datatable 参数的使用
  • vue3:computed
  • 我谈二值形态学基本运算——腐蚀、膨胀、开运算、闭运算
  • web安全漏洞之ssrf入门
  • 优化C++设计模式:用模板代替虚函数与多态机制
  • 二分搜索的三种方法
  • 正则表达式(补充)