知識庫 / Spring / Spring Cloud RSS 訂閱

Netflix Feign 與 OpenFeign 的區別

Spring Cloud
HongKong
9
12:46 PM · Dec 06 ,2025

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將Feign完全轉移到開源社區,作為名為OpenFeign的新項目進行開發。

幸運的是,它繼續從開源社區獲得巨大的支持,併發布了許多新功能和更新。

2.3. Spring Cloud OpenFeign

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

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

讓我們比較一下 Spring Cloud OpenFeign 中找到的 Feign 實現與使用 Spring Cloud Netflix Feign 的實現之間的差異。

3. 依賴項

首先,我們需要將 <em><a href="https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-feign">spring-cloud-starter-feign</a></em><em><a href="https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies">spring-cloud-dependencies</a></em> 依賴項添加到我們的 <em>pom.xml</em> 文件中:

<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 Netflix Feign 的示例類似,我們的 Spring Cloud OpenFeign 教程包含相同的示例。

唯一不同之處在於,我們的導入語句來自不同的包。

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 集成方案。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.