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

Feign调用第三方,想要单独的拦截器,但是变为全局拦截器

原代码:

feign


import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;@RefreshScope
@FeignClient(value = "ThirdClient", url = "http://third.url.com", configuration = ThirdClientFeignInterceptor .class)
public interface ThirdClient {@PostMapping("/api/xxx")Object thirdApi(@RequestBody Object request);
}

feign对应的拦截器

import feign.RequestInterceptor;
import feign.RequestTemplate;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;@Slf4j
@Component
public class ThirdClientFeignInterceptor implements RequestInterceptor {@Autowiredprivate HeaderConfig headerConfig;@Overridepublic void apply(RequestTemplate template) {template.header("token", headerConfig.getToken());}
}

结果发现这个拦截器是全局的拦截器,但我只想调用ThirdClient下面接口的时候才走这个拦截器。需要改成下面这样:

feign对应的拦截器改成下面这样:

import feign.RequestInterceptor;
import feign.RequestTemplate;
import lombok.extern.slf4j.Slf4j;
import javax.annotation.Resource;@Slf4j
public class MyFeignInterceptor implements RequestInterceptor {@Resourceprivate HeaderConfig headerConfig;@Overridepublic void apply(RequestTemplate template) {template.header("token", headerConfig.getToken());}
}

原因:

没有@Component,就不会被放入全局拦截器中!!可能是因为feign的RequestInterceptor有相关逻辑,如果有@Component,则把实现了RequestInterceptor这个接口的所有实现类都识别到,加入全局拦截器中。

 


http://www.mrgr.cn/news/65494.html

相关文章:

  • vulhub之phpmyadmin
  • Django ORM详解:事务与F、Q函数使用
  • Vue3的router和Vuex的学习笔记整理
  • 云原生周刊:微服务架构 2025 年的发展趋势丨2024.11.04
  • 如何选择最适合的消息队列?详解 Kafka、RocketMQ、RabbitMQ 的使用场景
  • 深度学习之降维和聚类
  • 基于 RNN 的语言模型
  • 如何提高总线抗扰度之EFT篇
  • python常用的第三方库下载方法
  • 自闭症康复技术研究前沿:探索新突破
  • word及Excel常见功能使用
  • Linux环境离线安装Ollama
  • 诺贝尔物理学奖的新篇章:机器学习与神经网络的光辉时刻
  • WMV怎么转MP4?五个简单好用的视频格式转换方法!
  • channel error 报错【已解决】
  • 告别局域网限制!轻松远程访问本地Paperless-ngx文档管理系统远程办公
  • 企业人力资源招聘面试新工具:AI智能面试系统
  • 猫用宠物空气净化器推荐?热度高的两款产品——希喂、安德迈实测
  • stm32cubeIde 使用笔记
  • ubuntu unrar解压 中文文件名异常问题解决
  • 尚庭公寓-开发准备
  • 【Kettle的安装与使用】使用Kettle实现mysql和hive的数据传输(使用Kettle将mysql数据导入hive、将hive数据导入mysql)
  • 分布式光伏管理办法
  • 【AD】2-3 多Part元件的绘制实例-运放
  • 视频去水印怎么办?两种方法教会你
  • 在区块链技术中,什么是工作量证明(PoW)?