什么是Feign
Feign是由Retrofit,JAXRS-2.0和WebSocket启发的一个java到http客户端绑定。 Feign的主要目标是将Java Http Clients变得简单。Feign的源码地址:https://github.com/OpenFeign/feign
写一个Feign
在我之前的博文有写到如何用Feign去消费服务,简单的实现一个Feign客户端,首先通过@FeignClient,客户端,其中value为调用其他服务的名称,FeignConfig.class为FeignClient的配置文件,代码如下:
![33727780e363668034b6e6a306f6e355.png](https://i-blog.csdnimg.cn/blog_migrate/22dcfef4679cc51287e8bfb6a312c1a1.jpeg)
其配置文件如下:
![03973fcb4ad6a16a3b2ca0dd5c922f68.png](https://i-blog.csdnimg.cn/blog_migrate/939f59b0ad02c7c6acca2f51151b67ac.jpeg)
查看FeignClient的源码,其代码如下:
![938705de7f63cc9f2098e4527a922476.png](https://i-blog.csdnimg.cn/blog_migrate/bcb838f2c2981adea182ca3a602791c7.jpeg)
feign 用于声明具有该接口的REST客户端的接口的注释应该是创建(例如用于自动连接到另一个组件。 如果功能区可用,那将是 用于负载平衡后端请求,并且可以配置负载平衡器 使用与伪装客户端相同名称(即值)@RibbonClient 。
其中value()和name()一样,是被调用的 service的名称。 url(),直接填写硬编码的url,decode404()即404是否被解码,还是抛异常;configuration(),标明FeignClient的配置类,默认的配置类为FeignClientsConfiguration类,可以覆盖Decoder、Encoder和Contract等信息,进行自定义配置。fallback(),填写熔断器的信息类。
FeignClient的配置
默认的配置类为FeignClientsConfiguration,这个类在spring-cloud-netflix-core的jar包下,打开这个类,可以发现它是一个配置类,注入了很多的相关配置的bean,包括feignRetryer、FeignLoggerFactory