Spring Cloud是当前炙手可热的微服务开发框架。它的功能强大,组件丰富,设计优雅。目前Spring Cloud还在不断发展之中。
Spring Cloud即将发布 SpringCloudEdgware
版本。该版本解决了不少Bug,新增了不少新特性,本系列博客将为大家详细阐述在Spring Cloud Edgware中新增的特性。
我们知道:
SpringCloudBrixton
版中,只能使用Java代码自定义配置SpringCloudCamden
版中,可使用Java代码自定义配置,也可使用配置属性自定义配置,两者等价。配置属性配置的方式为我们带来更好的使用体验和开发效率。SpringCloudCamden
中,Feign依然不支持使用配置属性来自定义配置。该遗憾已在 SpringCloudEdgware
得到了填补——从此,Feign也支持配置属性自定义配置啦!
下面我们来看看如何使用配置属性自定义Feign的行为:
对于一个指定名称的Feign Client(例如该Feign Client的名称为 feignName
):
feign:
client:
config:
feignName:
connectTimeout: 5000 # 相当于Request.Options
readTimeout: 5000 # 相当于Request.Options
# 配置Feign的日志级别,相当于代码配置方式中的Logger
loggerLevel: full
# Feign的错误解码器,相当于代码配置方式中的ErrorDecoder
errorDecoder: com.example.SimpleErrorDecoder
# 配置重试,相当于代码配置方式中的Retryer
retryer: com.example.SimpleRetryer
# 配置拦截器,相当于代码配置方式中的RequestInterceptor
requestInterceptors:
- com.example.FooRequestInterceptor
- com.example.BarRequestInterceptor
decode404: false
上面讨论了如何配置特定名称的Feign Client,那么如果想为所有的Feign Client都进行配置,该怎么办呢?我们知道, @EnableFeignClients
注解上有个 defaultConfiguration
属性,我们可以将默认配置写成一个类,然后用 defaultConfiguration
来引用,例如:
@EnableFeignClients(defaultConfiguration = DefaultRibbonConfig.class)
那么如果想使用配置属性该怎么办呢?
如果你想配置所有的Feign Client,只需像如下配置即可:
feign:
client:
config:
default:
connectTimeout: 5000
readTimeout: 5000
loggerLevel: basic
如果你不小心又使用了Java代码配置Feign,同时又使用了配置属性配置Feign,那么使用配置属性的优先级更高。配置属性配置的方式将会覆盖Java代码配置。如果你想修改代码配置方式的优先级,可使用如下属性: feign.client.default-to-properties=false
。
本文分享自 A周立SpringCloud 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!