Spring Cloud Edgware新特性之三:使用配置属性自定义Feign的行为
时间:2022-05-06
本文章向大家介绍Spring Cloud Edgware新特性之三:使用配置属性自定义Feign的行为,主要内容包括配置指定名称的Feign Client、通用配置、TIPS:、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
Spring Cloud是当前炙手可热的微服务开发框架。它的功能强大,组件丰富,设计优雅。目前Spring Cloud还在不断发展之中。
Spring Cloud即将发布 SpringCloudEdgware
版本。该版本解决了不少Bug,新增了不少新特性,本系列博客将为大家详细阐述在Spring Cloud Edgware中新增的特性。
我们知道:
- Ribbon在
SpringCloudBrixton
版中,只能使用Java代码自定义配置 - Ribbon在
SpringCloudCamden
版中,可使用Java代码自定义配置,也可使用配置属性自定义配置,两者等价。配置属性配置的方式为我们带来更好的使用体验和开发效率。 - Feign使用Java代码自定义配置的方式跟Ribbon非常类似
- 遗憾的是:在
SpringCloudCamden
中,Feign依然不支持使用配置属性来自定义配置。
该遗憾已在 SpringCloudEdgware
得到了填补——从此,Feign也支持配置属性自定义配置啦!
下面我们来看看如何使用配置属性自定义Feign的行为:
配置指定名称的Feign Client
对于一个指定名称的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
。
TIPS:
- 使用代码自定义Feign的官方文档:http://cloud.spring.io/spring-cloud-static/Camden.SR3/#spring-cloud-feign-overriding-defaults
- 引入该特性的相关pull request:https://github.com/spring-cloud/spring-cloud-netflix/pull/1942
- 个人并不建议配置retryer,Spring Cloud Camden以及之后的版本中,Spring Cloud关闭了Feign的重试,而是使用Ribbon的重试。如果自己再定义Feign的重试后,那么可能会造成重试特性的混乱。笔者已在https://github.com/spring-cloud/spring-cloud-netflix/issues/2330 提出该问题。
- 10个使用 Foundation 框架开发的WordPress 主题推荐
- jQuery 效果使用
- 几款更换WordPress 后台UI 的插件推荐
- 入门:构建简单的Web API
- WordPress 编辑器快捷键——让写作来得更方便些吧!
- ASP.NET Web API: 宿主(Hosting)
- 在 Windows Phone上使用QQConnect OAuth2
- WordPress 开发之使用WordPress 3.8+后台图标(dashicons)
- 基础(二)
- Ionic:高级的 HTML5 移动APP(Web App)开发框架
- 为WordPress 评论框添加HTML5 表单验证
- Sass 基础(一)
- 送上段模拟圣诞节下雪的javascript 代码
- 互联网:解开大脑之迷
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 微信公众号文章采集工具,可采集文章文字内容信息及图片
- Python打包GUI界面组件汇总,Tkinter(TK)实例代码
- 知了超细讲解Django打造大型企业官网学习记录,02diango url 笔记
- 直播卖货小程序源码中,商品分类页面是如何实现的
- python requests.session验证码登录应用实战,爱站关键词挖掘采集
- 【淘宝】python的淘宝秒杀抢购下单源码参考
- Python素材下载爬虫,ui素材下载爬取采集源码
- Python与seo的应用,sitemap.xml文件制作工具源码
- 关键词爬虫,Python花瓣画板关键词采集存储数据库
- 电商商品爬虫,亚马逊amazon采集源码
- Python tk例子,古董音乐播放器exe
- 爬虫例子,Python多线程爬虫例子案例
- 【爬虫】花瓣图片爬虫,Python图片采集下载源码
- Python大作网图片采集下载,多线程图片爬虫
- Python素材下载爬虫,多线程rar下载爬虫