配置属性
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 TYPE feign.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) ... |
| 配置属性局部 |
.ribbon.NFLoadBalancerClassName ... |
feign.client.config..loggerLevel ... |
| 配置属性全局 |
无 | feign.client.config.default.loggerLevel |
Feign 代码方式 VS 配置属性方式
| 配置方式 |
有点 |
缺点 |
|---|---|---|
| 代码配置 |
基于代码,更加灵活 |
如果Feign的配置类加了@Configuration注解,需注意父子上下文,线上修改需要重打包,发布 |
| 属性配置 |
易上手 配置更加直观 线上修改无需重新打包,发布 优先级更高 |
极端场景下没有代码配置更加灵活 |










