前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >子线程中获取request

子线程中获取request

作者头像
阿超
发布于 2022-08-21 03:17:01
发布于 2022-08-21 03:17:01
1.9K00
代码可运行
举报
文章被收录于专栏:快乐阿超快乐阿超
运行总次数:0
代码可运行

写一个接口,用于测试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 "";
    }
}

我们请求一下

发现抛出了异常

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RequestContextHolder.setRequestAttributes(RequestContextHolder.getRequestAttributes(), true);

成功获取

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Spring Cloud Feign如何实现JWT令牌中继以传递认证信息
令牌中继(Token Relay)是比较正式的说法,说白了就是让Token令牌在服务间传递下去以保证资源服务器能够正确地对调用方进行鉴权。
码农小胖哥
2021/11/02
1.6K0
ThreadLocal子线程共享
该方法在ThreadLocalMap的构造函数被调用,上面的注释说,该方法明显是在子类InheritableThreadLocal中定义的,这里提供这个方法,主要是能让Thread在构造函数中能调用上面说到的InheritableThreadLocal的childValue
阿超
2022/08/17
8150
ThreadLocal子线程共享
feign远程调用丢失请求头源码分析与解决
我们在写服务端项目的时候,总会限制对某些资源的访问,最常见的就是要求用户先登录才能访问资源,当用户登录后就会将此次会话信息保存进session,同时返回给浏览器指定的cookie键值,下次浏览器再次访问,请求头中就会携带这个cookie,我们也以次来识别用户的登录状态,做出正确响应。
vivi
2021/01/19
8730
Spring中获取request的几种方法,及其线程安全性分析
概述 在使用Spring MVC开发Web系统时,经常需要在处理请求时使用request对象,比如获取客户端ip地址、请求的url、header中的属性(如cookie、授权信息)、body中的数据等。由于在Spring MVC中,处理请求的Controller、Service等对象都是单例的,因此获取request对象时最需要注意的问题,便是request对象是否是线程安全的:当有大量并发请求时,能否保证不同请求/线程中使用不同的request对象。 这里还有一个问题需要注意:前面所说的“在处理请求时
Tanyboye
2018/07/02
1.3K0
使用aop加解密http接口
最近在写一个小程序接口,由于安全性比较高,因此需要给请求参数和响应进行加密处理。如果在每个方法上都加密解密,那样代码就显得太繁琐了而且工作量会加大。所以,我们会统一进行加解密处理,一种比较传统的方式就是通过拦截器进行拦截处理。在这里我们选择通过使用spring的aop来实现。
Java旅途
2020/06/25
8400
Spring-boot 配置Aop获取controller里的request中的参数以及其返回值
在spring boot里面一切配置都是很简单的,下面为我所有被请求到的controller加上Aop的功能吧,看码:
林老师带你学编程
2019/05/26
4.9K0
SpringBoot之采用AOP统一打印日志信息
  为什么要使用AOP打印日志,因为在方法中打印日志会大大增加方法的冗余,增加开发时间
彼岸舞
2021/02/01
1.4K0
SpringBoot之采用AOP统一打印日志信息
SpringMVC ServletRequestAttributes的应用
在SpringMVC的源代码中提供了一个封装过的ThreadLocal,其中保存了每次请求的HttpServletRequest对象,(详细请看org.springframework.web.context.request.ServletRequestAttributes的源代码) 。
多凡
2020/02/13
2.9K0
Feign调用丢失Header的解决方案
在 Spring Cloud 中 微服务之间的调用会用到Feign,但是在默认情况下,Feign 调用远程服务存在Header请求头丢失问题。
程序员果果
2019/11/28
2.2K0
微服务的用户认证与授权杂谈(下)
在微服务的用户认证与授权杂谈(上)一文中简单介绍了微服务下常见的几种认证授权方案,并且使用JWT编写了一个极简demo来模拟Token的颁发及校验。而本文的目的主要是延续上文来补充几个要点,例如Token如何在多个微服务间进行传递,以及如何利用AOP实现登录态和权限的统一校验。
端碗吹水
2020/09/23
7290
微服务的用户认证与授权杂谈(下)
基于Spring Data JPA框架的文章归档实现
最近在写自己的个人博客系统,框架采用SpringMVC、Spring4.0、Spring Data/JPA组合,本博客就文档归档功能在Spring Data JPA框架下是如何实现的进行记录。 现在可以star(收藏),watch(关注),但是还在开发中,所以还是还在先别下载 项目github:https://github.com/u014427391/myblog
SmileNicky
2019/01/17
5370
基于Spring Data JPA框架的文章归档实现
Spring注入的成员属性HttpServletRequest是线程安全的吗?【享学Spring MVC】
我们知道一个Http请求就是一个Request对象,Servlet规范中使用HttpServletRequest来表示一个Http请求。然而在Spring MVC中,官方并不建议你直接使用Servlet源生的API,如常见的HttpServletRequest/HttpServletResponse等,因为官方认为Servlet技术只是web的落地实现之一,它并不希望你使用具体API而和某项技术耦合,比如从Spring 5.0开始就出现了web的另一种实现方式:Reactive,它让Servlet技术从之前的必选项变成了可选项。
YourBatman
2020/03/18
3.7K0
SpringBoot异步任务获取HttpServletRequest
在使用框架日常开发中需要在controller中进行一些异步操作减少请求时间,但是发现在使用@Anysc注解后会出现Request对象无法获取的情况,本文就此情况给出完整的解决方案
code2roc
2023/07/19
8090
订单服务:订单流程
订单流程是指从订单产生到完成整个流转的过程,从而行程了一套标准流程规则。而不同的产品类型或业务类型在系统中的流程会千差万别,比如上面提到的线上实物订单和虚拟订单的流程,线上实物订单与 O2O 订单等,所以需要根据不同的类型进行构建订单流程。不管类型如何订单都包括正向流程和逆向流程,对应的场景就是购买商品和退换货流程,正向流程就是一个正常的网购步骤:
一个风轻云淡
2023/10/15
6650
订单服务:订单流程
子线程优雅调用父线程RequestScope作用域Bean问题的探究
最近我们组在做项目分层模块化项目调研,就产生一个问题如何在开启的线程中不破坏使用习惯情况下使用请求线程里面的RequestScope作用域的bean,感觉这个问题比较有意思就研究并整理下一下,以便备忘,下面从最基础知识将起,一步步引入问题和解决方法
加多
2018/09/06
1.3K0
子线程优雅调用父线程RequestScope作用域Bean问题的探究
【小家Spring】Spring MVC之RequestContextHolder和LocaleContextHolder的使用详解以及使用误区
在Java Web的开发中,我们大都执行着三层的开发模式(Controller、Service、Dao)。然后很少有人知道这三层的职责便捷在哪? 所以不乏经常遇到这样的问题:我这块逻辑该写在哪呢?我相信大多数初、中甚至高级程序员也分不太清楚,逻辑分层有点信手拈来,所以最终写成了后辈们眼中的“屎”,哈哈当然代码组织结构不是本文讨论的范畴~~~
YourBatman
2019/09/03
6.1K0
SpringMVC中出现的线程安全问题分析
(ps:前几个星期发生的事情)之前同事跟我说不要使用@Autowired方式注入HttpServletRequest(ps:我们的代码之前用的是第2种方式)。同事的意思大概是注入的HttpServletRequest对象是同一个而且存在线程安全问题。我保持质疑的态度,看了下源码,证明了@Autowired方式不存在线程安全问题,而@ModelAttribute方式存在线程安全问题。
用户2032165
2018/09/03
2.2K0
获取request,获取response,获取session,获取ServletRequestAttributes,的工具类
我们写一个springboot项目,写一个接口,接口没有参数,但是我们想要 获取获取request,获取response,获取session,获取ServletRequestAttributes,将字符串渲染到客户端,判断接口是否是Ajax异步请求,内容编码,解码
一写代码就开心
2022/09/27
2.1K0
自定义注解
代码逻辑: 访问get接口,接口通过并返回一个参数key-value设置到request中去, 同时也会往session中设置一个相同的key-value, 前台拿到这个key-value,然后存储到form表单中,post提交表单时,会将这个key-value提交, 后台校验此key-value和session中的key-value是否一致
在下是首席架构师
2022/08/18
2960
【第十八篇】商城系统-订单中心设计解决方案
  我们需要把相关的静态资源拷贝到nginx,然后动态模板文件拷贝到order项目的templates目录下,然后调整资源的路径。在网关中设置对应的路由即可。
用户4919348
2022/10/04
7060
【第十八篇】商城系统-订单中心设计解决方案
推荐阅读
相关推荐
Spring Cloud Feign如何实现JWT令牌中继以传递认证信息
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文