Netflix Feign與OpenFeign之間的差異
- Spring Cloud
1.概述
在本教程中,我們將描述Spring Cloud Netflix Feign和Spring 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-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依賴項的兼容版本。
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中不可用的新選項和功能。
最近,我們獲得了對Micrometer , Dropwizard Metrics , Apache HTTP Client 5 , Google HTTP client等的支持。
7.結論
本文比較了OpenFeign和Netflix Feign的Spring Cloud集成。像往常一樣,您可以在GitHub上找到Spring Cloud OpenFeign和Netflix Feign的資源。