千家信息网

Spring Cloud Feign的组成和配置方法

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容介绍了"Spring Cloud Feign的组成和配置方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,
千家信息网最后更新 2026年11月02日Spring Cloud Feign的组成和配置方法

本篇内容介绍了"Spring Cloud Feign的组成和配置方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Feign的组成

接口作用默认值
Feign.BuilderFeign的入口Feign.Builder
ClientFeign底层用什么去请求和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配置

粒度RibbonFeign
代码局部@RibbonClient(configuration=RibbonConfig.class),RibbonConfig类必须加@Configuration,且必须放在父上下文无法扫到的包下@FeignClient(configuration=FeignConfig.class),FeignConfig类的@Configuration可以不加(可选),如果有,必须放在父上下文无法扫到的包下
代码全局@RibbonClients(defaultConfigurtion=RibbonConfig.class)@EnableFeignClients(defaultConfiguration = FeignConfig.class)
...
配置属性局部.ribbon.NFLoadBalancerClassName
...
feign.client.config..loggerLevel
...
配置属性全局无feign.client.config.default.loggerLevel

Feign 代码方式 VS 配置属性方式

配置方式有点缺点
代码配置基于代码,更加灵活如果Feign的配置类加了@Configuration注解,需注意父子上下文,线上修改需要重打包,发布
属性配置易上手
配置更加直观
线上修改无需重新打包,发布
优先级更高
极端场景下没有代码配置更加灵活

优先级:细粒度属性配置 > 细粒度代码配置 > 全局属性配置 > 全局代码配置

"Spring Cloud Feign的组成和配置方法"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

配置 代码 方式 属性 上下 上下文 日志 级别 全局 粒度 时间 注解 父子 支持 方法 内容 客户 客户端 解码器 错误 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司怎么样 苏州找大状互联网科技有限公司 互联网金融监管科技数据 科技互联网项目 科技互联网政务服务 互联网科技媒体 碳银互联网科技有限公司 科技互联网创业计划书 美国互联网前沿科技 中正互联网科技招聘 佩信高科技互联网 重庆威客帮互联网科技 互联网和黑科技的看法 互联网科技与大数据专业 互联网科技大赛获奖感言 江苏苏星互联网科技有限公司 工业互联网科技成果转化 南京一网一红互联网科技有限公司 优雇互联网科技有限公司 互联网企业和网络科技有限公司 互联网科技图片 湖北九亚互联网络科技有限公司 智能科技公司是互联网公司吗 互联网科技视频素材 一五八零互联网科技 无锡溥仪互联网科技有限公司 衡水科技产业互联网平台 华中科技有哪些互联网大佬 保险科技服务互联网营销体系 广东工业互联网大赛深圳学泰科技
0