子线程中获取request

简介: 子线程中获取request

在这个世界上,一切都预先被谅解了,一切也就被卑鄙地许可了。——《不能承受的生命之轻》

写一个接口,用于测试:

import cn.hutool.core.thread.AsyncUtil;
import javax.annotation.Resource;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.concurrent.CompletableFuture;
@RestController
@RequestMapping("test")
public class TestController {
  @Resource
    private HttpServletRequest request;
  @GetMapping("request")
    public String request() {
        AsyncUtil.get(CompletableFuture.runAsync(() -> {
            String id = request.getParameter("id");
            System.out.println(id);
        }));
        AsyncUtil.get(CompletableFuture.runAsync(() -> {
            String id = request.getParameter("id");
            System.out.println(id);
        }));
        return "";
    }
}

我们请求一下

发现抛出了异常

我们在第一行加上这行代码:

RequestContextHolder.setRequestAttributes(RequestContextHolder.getRequestAttributes(), true);

成功获取

尝试将这行代码放入拦截器,也成功生效

这是因为源码中,如果我们传入inheritabletrue,则在NamedInheritableThreadLocal中设置值

该类继承了InheritableThreadLocal,因此可以在子线程共享变量

相关文章
|
网络协议 测试技术 应用服务中间件
|
机器学习/深度学习 人工智能 安全
《AI赋能网络数据加密:开启网络拓扑安全新征程》
在数字化时代,网络拓扑承载着海量数据流动,但面临黑客攻击、数据窃取等安全威胁。传统加密方法逐渐失效,人工智能(AI)成为保障数据安全的新引擎。通过动态密钥生成、自适应加密算法选择和基于行为分析的加密控制,AI显著提升了加密灵活性与安全性。同时,智能解密模型可高效处理异常加密数据。金融与医疗行业的应用案例证明了AI加密技术的有效性。未来,AI将结合量子计算、区块链等技术,在更复杂的网络环境中为数据安全提供强大保障,推动数字化社会的稳定发展。
686 58
|
SQL 数据管理 Serverless
《解锁SQL分组统计:GROUP BY的深度剖析与实战应用》
SQL中的GROUP BY语句是数据分组统计的核心工具,通过依据指定列对数据集进行划分,结合聚合函数(如COUNT、SUM、AVG等),可深入挖掘数据价值。它广泛应用于商业分析、科研数据处理及日常数据管理,支持多列分组与HAVING、JOIN等语句结合使用,提升数据分析维度与灵活性。然而,在大数据场景下,GROUP BY可能面临性能瓶颈与数据准确性问题,需通过优化索引、分区处理和数据清洗来应对挑战。掌握GROUP BY的原理与高级用法,将为数据驱动决策提供强大支持。
647 6
|
存储 JSON PyTorch
Multimodal LLM训练-模型文件\训练数据加载逻辑源码分析
Multimodal LLM训练-模型文件\训练数据加载逻辑源码分析
652 17
|
安全 Shell Linux
Git 基础——《Pro Git》
Git 是一个分布式版本控制系统,支持多种操作来管理和跟踪代码库的变化。以下是常用的操作和命令:
1073 37
|
开发工具 git
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
这篇文章是关于Git常用命令的总结,包括初始化配置、基本提交、分支操作、合并、压缩历史、推送和拉取远程仓库等操作的详细说明。
517 1
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
|
自然语言处理 负载均衡 API
gRPC 一种现代、开源、高性能的远程过程调用 (RPC) 可以在任何地方运行的框架
gRPC 是一种现代开源高性能远程过程调用(RPC)框架,支持多种编程语言,可在任何环境中运行。它通过高效的连接方式,支持负载平衡、跟踪、健康检查和身份验证,适用于微服务架构、移动设备和浏览器客户端连接后端服务等场景。gRPC 使用 Protocol Buffers 作为接口定义语言,支持四种服务方法:一元 RPC、服务器流式处理、客户端流式处理和双向流式处理。
|
机器学习/深度学习 自然语言处理 监控
CNN的应用场景
【10月更文挑战第23天】CNN的应用场景
1351 3
|
机器学习/深度学习 人工智能 搜索推荐
AI与未来医疗:重塑健康的双刃剑
【10月更文挑战第6天】 人工智能作为现代科技的巅峰之作,已经渗透进我们生活的方方面面。从语音助手到自动驾驶,AI不仅改变了我们的日常,更在各个专业领域,特别是医疗行业,扮演着愈发重要的角色。本文探讨了AI在未来医疗中的应用及其潜在影响,揭示了这把“双刃剑”的机遇与挑战。
508 1
|
API 数据安全/隐私保护 开发者
商品详情 API 接口的调用次数是否有限制?
商品详情API接口调用次数受限,旨在保障系统稳定性和防止恶意攻击。平台依据账户类型设定不同限制:普通开发者账户调用次数较少,而企业级账户享有更高限额但需申请并可能收费。此外,平台还设置了短期和长期调用频率限制,以避免高并发请求导致服务器过载。
838 2