首页 > 其他分享 >FeignClient的拦截器中RequestContextHolder.getRequestAttributes()值为null

FeignClient的拦截器中RequestContextHolder.getRequestAttributes()值为null

时间:2024-04-12 10:35:40浏览次数:21  
标签:FeignClient 拦截器 RequestContextHolder getRequestAttributes 值为 null

一、遇到问题

  • 在@FeignClient的拦截器中获取token,我首先获得RequestContextHolder.getRequestAttributes(),结果发现值为null。``

二、资料查找

内事不决问百度,感觉百度了一下,很快我发现其他人也有通用报null的问题,只是他们是出现在子线程中,所以我猜测@FeignClient调用的时候为异步调用,所以RequestContextHolder.getRequestAttributes()为null。
回头看报错位置

发现确实为异步调用。

三、解决办法

  1. 最简单的办法就是将RequestAttributes对象设置为子线程共享
//开启新线程之前,添加代码:
ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
RequestContextHolder.setRequestAttributes(sra, true);

2.不使用拦截器,使用 @RequestHeader("Authorization") String token 从方法体注入。ps我这里token是动态的,需要当前请求中获取。

标签:FeignClient,拦截器,RequestContextHolder,getRequestAttributes,值为,null
From: https://www.cnblogs.com/ncyy/p/18130632

相关文章

  • Java登陆第四十二天——Axios拦截器
    如果想在axios发送HTTP请求之前。或者是接收响应之前做一些额外的工作,可以通过拦截器完成。Axios拦截器分为请求拦截器,响应拦截器。分别在请求或响应时生效。一图了解Axios拦截器提供了两种文本函数:名字太长,直接看语法语法格式如下://请求拦截器,f1对应请求发送成功函数,f2......
  • SpringBoot拦截器注入stringredistemplate出现Consider defining a bean of type 'org
    问题自定义拦截器需要注入StringRedisTemplate来通过token获取redis中的数据自定义拦截器代码@ComponentpublicclassLoginInterceptorimplementsHandlerInterceptor{@AutowiredprivateStringRedisTemplatestringRedisTemplate;@Overridepublicb......
  • SpringBoot登录校验(五)拦截器Interceptor
    什么是拦截器是一种动态拦截方法调用的机制,类似于过滤器。拦截器是Spring框架中提供的,用来动态拦截控制器方法的执行。拦截器的作用:拦截请求,在指定方法调用前后,根据业务需要执行预先设定的代码。在拦截器当中,我们通常也是做一些通用性的操作,比如:我们可以通过拦截器来......
  • 七、使用jsPlumb实现流程图功能--Connection事件和拦截器
    在一个交互式的流程图配置中,连线可能是最高频的操作。jsPlumb也提供了相对应的事件和拦截器可以让开发人员做一些符合需求的功能。一、Connection事件Connection事件是在行为发生之后的一个通知,Connection常用的一些事件有:EVENT_CONNECTION:连线创建之后触发的事件。EVENT_CON......
  • Spring AOP 和 拦截器 获取类上与方法上的注解
    在做一个获取目标注解的鉴权功能时,想到了AOP与拦截器两种方式,其中@HasPermission是我自定义的注解,以下分别为AOP与拦截器获取访问目标类与方法上的注解的方法。由于我的系统在拦截器上配置了拦截过则,所以我选的是拦截器的方式,读者可根据自己的需求来。一、SpringAOP方式获取......
  • 拦截器和过滤器的区别
            在平常使用中,对于某些功能的实现,可能既可以用拦截器完成,又可以用监听器完成。这样使我们对于这两个概念有一定程度上的混淆。 拦截器和过滤器的区别过滤器和拦截器的区别:①拦截器是基于java的反射机制的,而过滤器是基于函数回调。②拦截器不依赖与serv......
  • 【WEEK5】 【DAY1】拦截器【中文版】
    2024.3.25Monday目录9.拦截器9.1.概述9.2.自定义拦截器9.2.1.如何实现拦截器9.2.2.新建module9.2.2.1.新建springmvc-07-interceptor模块9.2.2.2.添加web支持9.2.2.3.添加applicationContext.mxl,新建controller文件夹9.2.2.4.添加jar包9.2.2.5.配置tomcat9.2.3.新建Te......
  • 拦截器不生效的问题处理
    拦截器没有注册到容器中,不能被容器管理 主要由以下两个步骤:自定义拦截器类实现HandlerInterceptor接口自定义WebMvc配置类实现WebMvcConfigurer接口,添加自定义拦截器类主要是第二步缺少。第一步:自定义拦截器UserInterceptor:publicclassUserInterceptorimplemen......
  • Struts2中type类型有哪些?Struts2默认能解决get和post提交方式的乱码问题吗?Struts2中如
    Struts2中type类型有哪些?Struts2中type类型指的是结果类型,用于指定Action执行完成后如何返回结果给客户端。Struts2框架提供了多种结果类型,以满足不同的业务需求和页面跳转方式。以下是一些常见的Struts2结果类型:dispatcher:这是默认的结果类型,相当于servlet的forward,即服......
  • 配置跨域和拦截器仍会显示跨域
    问题复现我的项目是前后端分离的项目,后端配置了跨域以及拦截器跨域代码@ConfigurationpublicclassWebConfigimplementsWebMvcConfigurer{@ResourceprivateJwtFilterjwtFilter;/***不需要拦截地址*/publicstaticfinalStr......