Netflix Feign與OpenFeign之間的差異

1.概述

在本教程中,我們將描述Spring Cloud Netflix FeignSpring Cloud OpenFeign之間的區別。

2.Feign

Feign通過提供註解支持,使我們能夠僅使用接口來實現客戶端,從而使編寫Web服務客戶端變得更加容易。

Feign最初是由Netflix創建並發布的,這是其Netflix OSS項目的一部分。今天,它是一個開源項目。

2.1 Spring Cloud Netflix Feign

Spring Cloud Netflix將Netflix OSS產品集成到Spring Cloud生態系統中。其中包括Feign,Eureka,Ribbon和許多其他工具和實用程序。但是,Feign獲得了自己的Spring Cloud Starter,以允許僅訪問Feign。

2.2 OpenFeign

最終,Netflix決定停止在內部使用Feign並停止其開發。由於這一決定,Netflix在一個名為OpenFeign的新項目下將Feign完全轉移到了開源社區。

幸運的是,它繼續得到開源社區的大力支持,並且看到了許多新功能和更新。

2.3 Spring Cloud OpenFeign

與其前身相似,Spring Cloud OpenFeign將前身項目集成到Spring Cloud生態系統中。

方便地,此集成增加了對Spring MVC註釋的支持,並提供了相同的HttpMessageConverters。

讓我們將Spring Cloud OpenFeign中的Feign實現與使用Spring Cloud Netflix Feign的實現進行比較。

3.依存關係

首先,我們必須在我們的pom.xml文件中spring-cloud-starter-feignspring-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依賴項的兼容版本。

4.使用Spring Cloud Netflix Feign實施

現在,我們可以使用@EnableFeignClients @FeignClient任何接口的組件掃描。

對於我們使用Spring Cloud Netflix Feign項目開發的每個示例,我們都使用以下導入:

import org.springframework.cloud.netflix.feign.FeignClient;

 import org.springframework.cloud.netflix.feign.EnableFeignClients;

所有功能的實現對於舊版本和新版本都是完全相同的。

5.使用Spring Cloud OpenFeign實施

相比之下,我們的Spring Cloud OpenFeign教程包含與Spring Netflix Feign實施相同的示例。

唯一的區別是,我們的進口貨來自不同的包裝:

import org.springframework.cloud.openfeign.FeignClient;

 import org.springframework.cloud.openfeign.EnableFeignClients;

其他所有內容都是相同的,由於這兩個庫之間的關係,這不足為奇。

6.比較

從根本上講,Feign的這兩種實現是相同的。我們可以將這歸因於Netflix Feign是OpenFeign的始祖。

但是,Spring Cloud OpenFeign包括Spring Cloud Netflix Feign中不可用的新選項和功能。

最近,我們獲得了對MicrometerDropwizard MetricsApache HTTP Client 5Google HTTP client等的支持。

7.結論

本文比較了OpenFeign和Netflix Feign的Spring Cloud集成。像往常一樣,您可以在GitHub上找到Spring Cloud OpenFeignNetflix Feign的資源