对比 Netflix Feign 和 OpenFeign
本文主要描述介绍 Netflix Feign 和 OpenFeign 之间的差异,并比较一下Spring Cloud OpenFeign和使用Spring Cloud Netflix Feign的实现方式。
1. Feign
Feign提供注解支持,仅通过接口实现客户端,使得写web服务客户端更加容易。最早Feign是有Netflix 公司发布,作为Netflix OSS项目一部分。现在Feign已经是开源项目。
1.1 增加依赖
首先在pom.xml中增加spring-cloud-starter-feign 和 spring-cloud-dependencies 。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<versionId>1.4.7.RELEASE</versionID>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR8</version>
<type>pom</type>
<scope>import</scope>
</dependency>
注意,这个库仅在Spring Boot 1.4.7 或之前版本有效。因此pom.xml必须使用兼容的Spring Cloud依赖。
1.2 使用Spring Cloud Netflix Feign
现在能使用@EnableFeignClients 注解启用组件扫描使用了@FeignClient注解的接口。在项目中使用Spring Cloud Netflix Feign需要导入下面包:
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
新旧版本的所有特性实现都是一样。
2. OpenFeign
Spring Cloud Netflix Feign在Spring Cloud中集成Netflix OSS。其中包括Feign, Eureka, Ribbon等一系列其他工具。但Feign有自己的pring Cloud Starter,用户可以仅仅使用Feign。
后来Netflix内部不在使用Feign并停止更新,为此Netflix把Feign提交给开源社区,命名为OpenFeign。幸运的是,该项目受到开源社区的巨大支持并增加了很多新的特性和更新。
和它的前任类似,Spring Cloud OpenFeign整合前任项目至Spring Cloud生态。该整合增加了对Spring mvc注解的支持、并提供相同的HttpMessageConverters。
2.1 使用Spring Cloud OpenFeign
与使用Feign类似,仅导入包有差异:
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
其他内容都是一样,这并不奇怪,因为这两个库之间存在关系。
3. 总结
从根本上说这两种实现是相同的,这可归因于Netflix Feign是OpenFeign的始祖。然而Spring Cloud OpenFeign包含了在Spring Cloud Netflix Feign上没有的新特性和功能,如r Micrometer, Dropwizard Metrics, Apache HTTP Client 5, Google HTTP client等。
本文参考链接:https://blog.csdn.net/neweastsun/article/details/109307951