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

Spring-cloud-openfeign-@FeignClient中的configuration属性

@FeignClient注解中的configuration属性就是设置相关配置,但是这个属性写的非常的不好,而且在它的注释中也没有写全,所以本文记录一下,当我们的代码如下时:

@FeignClient(name = "xxx", configuration = Abc.class)
@FeignClient(name = "zzz")

其中这个Abc就是xxx这个client的配置类,不是zzz的配置类,所以对于zzz来说,Abc里的内容不会生效,那么Abc里都有哪些对象可以被认为是配置信息呢?根据实操,Abc这个类中,返回如下lite model是被feign认可的,它们分别是

RequestInterceptor:用于在发送请求前拦截并修改请求,例如添加或修改HTTP头信息
Decoder:用于将HTTP响应体解码为Java对象。Feign默认提供了ResponseEntityDecoder,但你可以自定义解码器来处理特定的响应格式
Encoder:用于将Java对象编码为HTTP请求体。Feign默认提供了SpringEncoder,但你也可以创建自己的编码器来处理特殊的需求
Contract:用于将Feign的接口方法映射为HTTP请求。Feign默认提供了SpringMvcContract,它支持Spring MVC的注解
Logger.Level:用于配置Feign的日志级别
Logger:用于自定义Feign的日志记录器
Client:用于发送HTTP请求。Feign默认使用Client.Default,但你可以替换为例如ApacheHttpClient、OkHttpClient等
Retryer:用于配置重试策略。Feign默认提供了Retryer.Default,但你可以自定义重试逻辑
ErrorDecoder:用于解码HTTP响应中的错误。Feign默认提供了ErrorDecoder.Default,但你可以自定义错误解码器来处理特定的错误情况
Options:用于配置Feign的底层请求选项,如连接超时、读取超时等
SetterFactory:用于创建Feign请求模板的setter方法。这通常不需要自定义,但在某些高级场景中可能有用
InvocationHandlerFactory:用于创建Feign的InvocationHandler。这也不常需要自定义,但在某些特定情况下可能有用

例如我要对xxx的client定义一个拦截器,每次发送请求的时候都往header里加点东西,那么我们可以在Abc这个类中这样写:

@Configuration
public class Abc{// 这个RequestInterceptor 类会被feign识别并配置,因为实现了RequestInterceptor 接口,// 而这个接口恰好是上述列表中的接口,所以这个配置自动生效@Beanpublic RequestInterceptor headerInterceptor() {return new HeaderInterceptor();}public static class HeaderInterceptor implements RequestInterceptor {@Overridepublic void apply(RequestTemplate template) {template.header("key1", "value1");}}
}

好了,本文就到这里,重点就是配置类中都有哪些Bean类型,也就是本文上述那个配置信息列表,至于这些接口怎么样网上多的是,本文只是为了拟补@FeignClient文档中的不足,所以我们不知道有哪些Bean类型

http://www.lryc.cn/news/401843.html

相关文章:

  • 实验七:图像的复原处理
  • 前端面试题日常练-day94 【Less】
  • c 语言 中 是否有 unsigned 安;这种写法?
  • Hive第三天
  • 【C++】模版初阶以及STL的简介
  • 51单片机学习(4)
  • 3D问界—MAYA制作铁丝栅栏(透明贴图法)
  • 编译器对C++23的支持程度
  • k8s核心操作_存储抽象_K8S中使用Secret功能来存储密码_使用免密拉取镜像_k8s核心实战总结---分布式云原生部署架构搭建033
  • 21集 ESP32-IDF开发教程-《MCU嵌入式AI开发笔记》
  • 《大数据基础》相关知识点及考点,例题
  • 网络通信介绍
  • 16、Python之容器:元组与列表、推导式与生成式,差之毫厘谬以千里
  • HTTP协议——请求头和请求体详情
  • 编程中的智慧之设计模式二
  • 基于python的百度资讯爬虫的设计与实现
  • 用 WireShark 抓住 TCP
  • Lua基础知识入门
  • 【机器学习实战】Datawhale夏令营2:深度学习回顾
  • 开发扫地机器人系统时无法兼容手机解决方案
  • Elasticsearch 角色和权限管理
  • 华为HCIP Datacom H12-821 卷42
  • 【精品资料】物业行业BI大数据解决方案(43页PPT)
  • 推荐一款处理TCP数据的架构--EasyTcp4Net
  • 2、电脑各部件品牌介绍 - 计算机硬件品牌系列文章
  • Git【撤销远程提交记录】
  • java基础学习:序列化之 - Fast serialization
  • Microsoft Build 2024 推出 .NET 9:Tensor<T>、 OpenAI Collaboration和.NET Aspire
  • 【Neural signal processing and analysis zero to hero】- 2
  • 好用的AI搜索引擎