Skip to main content
 首页 » 编程设计

对比 Netflix Feign 和 OpenFeign

2022年07月19日174softidea

对比 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
阅读延展