Spring Cloud Feign的组成和配置方法
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,本篇内容介绍了"Spring Cloud Feign的组成和配置方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,
千家信息网最后更新 2025年12月01日Spring Cloud Feign的组成和配置方法
本篇内容介绍了"Spring Cloud Feign的组成和配置方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
Feign的组成
| 接口 | 作用 | 默认值 |
|---|---|---|
Feign.Builder | Feign的入口 | Feign.Builder |
Client | Feign底层用什么去请求 | 和Ribbon配合时:LoadBalancerFeignClient不和Ribbon配合时: Fgien.Client.Default |
Contract | 契约,注解支持 | SpringMVCContract |
Encoder | 解码器,用于将独享转换成HTTP请求消息体 | SpringEncoder |
Decoder | 编码器,将相应消息体转成对象 | ResponseEntityDecoder |
Logger | 日志管理器 | Slf4jLogger |
RequestInterceptor | 用于为每个请求添加通用逻辑(拦截器,例子:比如想给每个请求都带上heared) | 无 |
Feign的日记级别
| 日志级别 | 打印内容 |
|---|---|
| NONE(默认) | 不记录任何日志 |
| BASIC | 仅记录请求方法,URL,响应状态代码以及执行时间(适合生产环境) |
| HEADERS | 记录BASIC级别的基础上,记录请求和响应的header |
| FULL | 记录请求和弦ineader,body和元数据 |
首先如何整合Feign
遵循SpringBoot的三板斧 第一步:加依赖
org.springframework.cloud spring-cloud-starter-openfeign
第二步:写注解
@EnableFeignClients //在启动类上加
第三步:写配置
如何给Feign添加日志级别
细粒度
方式一:代码实现 第一步:添加Feign配置类,可以添加在主类下,但是不用添加@Configuration。如果添加了@Configuration而且又放在了主类之下,那么就会所有Feign客户端实例共享,同Ribbon配置类一样父子上下文加载冲突;如果一定添加@Configuration,就放在主类加载之外的包。建议还是不用加@Configuration。
public class FeignConfig { @Bean public Logger.Level Logger() { return Logger.Level.FULL; }}第二步:给@FeignClient添加配置类
//@FeignClient configuration = GoodsFeignConfig.class 细粒度配置,指定配置类@FeignClient(name = "goods", configuration = FeignConfig.class)
第四步:写配置
logging: level: com.xxx.xxx.FeignAPI: DEBUG #需要将FeignClient接口全路径写上# 开启日志 格式为logging.level.+Feign客户端路径
方式二:配置属性实现
feign: client: config: #想要调用的微服务名称 server-1: loggerLevel: FULL
全局配置
方式一:代码实现 添加了@Configuration放在了主类之下,那么就会所有Feign客户端实例共享,同Ribbon配置类一样父子上下文加载冲突;让父子上下文ComponentScan重叠(强烈不建议)唯一正确方式
//在启动类上为@EnableFeignClients注解添加defaultConfiguration配置@EnableFeignClients(defaultConfiguration = FeignConfig.class)
方式二:配置属性实现
feign: client: config: #将调用的微服务名称改成default就配置成全局的了 default: loggerLevel: FULL
Feign支持的配置项
代码方式
| 配置项 | 作用 |
|---|---|
Logger.Level | 指定日志级别 |
Retryer | 指定重试策略 |
ErrorDecoder | 指定错误解码器 |
Request.Options | 超时时间 |
Collection | 拦截器 |
SetterFactory | 用于设置Hystrix的配置属性,Fgien整合Hystrix才会用 |
配置属性
feign: client: config: feignName: connectTimeout: 5000 # 相当于Request.Optionsn 连接超时时间 readTimeout: 5000 # 相当于Request.Options 读取超时时间 loggerLevel: full # 配置Feign的日志级别,相当于代码配置方式中的Logger errorDecoder: com.example.SimpleErrorDecoder # Feign的错误解码器,相当于代码配置方式中的ErrorDecoder retryer: com.example.SimpleRetryer # 配置重试,相当于代码配置方式中的Retryer requestInterceptors: # 配置拦截器,相当于代码配置方式中的RequestInterceptor - com.example.FooRequestInterceptor - com.example.BarRequestInterceptor # 是否对404错误解码 decode404: false encode: com.example.SimpleEncoder decoder: com.example.SimpleDecoder contract: com.example.SimpleContract
Feign还支持对请求和响应进行GZIP压缩,以提高通信效率,配置方式如下:
# 配置请求GZIP压缩feign.compression.request.enabled=true# 配置响应GZIP压缩feign.compression.response.enabled=true# 配置压缩支持的MIME TYPEfeign.compression.request.mime-types=text/xml,application/xml,application/json# 配置压缩数据大小的下限feign.compression.request.min-request-size=2048
Ribbon配置 VS Feign配置
| 粒度 | Ribbon | Feign |
|---|---|---|
| 代码局部 | @RibbonClient(configuration=RibbonConfig.class),RibbonConfig类必须加@Configuration,且必须放在父上下文无法扫到的包下 | @FeignClient(configuration=FeignConfig.class),FeignConfig类的@Configuration可以不加(可选),如果有,必须放在父上下文无法扫到的包下 |
| 代码全局 | @RibbonClients(defaultConfigurtion=RibbonConfig.class) | @EnableFeignClients(defaultConfiguration = FeignConfig.class)... |
| 配置属性局部 | ... | feign.client.config. ... |
| 配置属性全局 | 无 | feign.client.config.default.loggerLevel |
Feign 代码方式 VS 配置属性方式
| 配置方式 | 有点 | 缺点 |
|---|---|---|
| 代码配置 | 基于代码,更加灵活 | 如果Feign的配置类加了@Configuration注解,需注意父子上下文,线上修改需要重打包,发布 |
| 属性配置 | 易上手 配置更加直观 线上修改无需重新打包,发布 优先级更高 | 极端场景下没有代码配置更加灵活 |
优先级:细粒度属性配置 > 细粒度代码配置 > 全局属性配置 > 全局代码配置
"Spring Cloud Feign的组成和配置方法"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
配置
代码
方式
属性
上下
上下文
日志
级别
全局
粒度
时间
注解
父子
支持
方法
内容
客户
客户端
解码器
错误
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全宣传活动的意义
广电网络服务器如何设置
小程序本地数据库怎么得到
如何建立安全稳定的数据库
dayz特朗普服务器安全区
青岛福莱软件开发
数据库配置文件是什么
乐学帮网络技术有限公司产品
网络安全知识宣讲活动主题
魔兽世界手游怎么把服务器升级
游戏服务器限制通用吗
网络安全知识短片
创建voip服务器
vs2008连接数据库
安卓开发 本地数据库
地铁网络安全等级保护
网络安全法 国家战略
暗黑2各服务器通吗
药神3000怎么连接数据库
湖南轩创网络技术有限公司
数据库读取数据jsp
辽宁什么是网络技术服务工程
唐山用友软件开发公司
mongo数据库权限修改
数据库中关闭窗体的宏
医院信息网络安全情况汇报
预防沉迷网络安全上网作文
网络网络安全培训班
超云r3210服务器
互联网科技与观察