NetflixFeignとOpenFeignの違い
1. 概要
このチュートリアルでは、 Spring Cloud NetflixFeignとSpring CloudOpenFeignの違いについて説明します。
2. フェイグ
Feignは、インターフェイスだけでクライアントを実装できるアノテーションサポートを提供することにより、Webサービスクライアントの作成を容易にします。
もともと、Feignは NetflixOSSプロジェクトの一部としてNetflixによって作成およびリリースされました。 今日、それはオープンソースプロジェクトです。
2.1. Spring Cloud Netflix Feign
Spring Cloud Netflixは、NetflixOSSオファリングをSpringCloudエコシステムに統合します。 これには、Feign、Eureka、Ribbon、およびその他の多数のツールとユーティリティが含まれます。 ただし、Feignには、Feignだけにアクセスできるようにする独自のSpringCloudStarterが与えられました。
2.2. OpenFeign
最終的に、NetflixはFeignの社内での使用をやめることを決定し、その開発を中止しました。 この決定の結果、NetflixはOpenFeignという名前の新しいプロジェクトの下でFeignをオープンソースコミュニティに完全に移管しました。
幸いなことに、オープンソースコミュニティから絶大なサポートを受け続けており、多くの新機能やアップデートが見られます。
2.3. Spring Cloud OpenFeign
前任者と同様に、SpringCloudOpenFeignは前任者プロジェクトをSpringCloudエコシステムに統合します。
便利なことに、この統合により、Spring MVCアノテーションのサポートが追加され、同じHttpMessageConvertersが提供されます。
Spring CloudOpenFeignにあるFeignの実装をSpring CloudNetflixFeignを使用した実装と比較してみましょう。
3. 依存関係
まず、spring-cloud-starter-feignおよびspring-cloud-dependenciesの依存関係をpom.xmlファイルに追加する必要があります。
<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>
このライブラリは、SpringBoot1.4.7以前でのみ動作することに注意してください。 したがって、 pom.xml は、SpringCloudの依存関係の互換性のあるバージョンを使用する必要があります。
4. Spring CloudNetflixFeignを使用した実装
これで、 @EnableFeignClients を使用して、@FeignClientを使用するすべてのインターフェイスのコンポーネントスキャンを有効にできます。
Spring Cloud Netflix Feignプロジェクトを使用して開発したすべての例では、次のインポートを使用します。
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
すべての機能の実装は、新旧バージョンでまったく同じです。
5. SpringCloudOpenFeignを使用した実装
比較すると、 Spring Cloud OpenFeignチュートリアルには、SpringNetflixFeignを使用した実装と同じ例が含まれています。
ここでの唯一の違いは、インポートが別のパッケージからのものであるということです。
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
他のすべては同じですが、これら2つのライブラリ間の関係により、当然のことです。
6. 比較
基本的に、Feignのこれら2つの実装は同一です。 これは、OpenFeignの祖先であるNetflixFeignによるものと考えられます。
ただし、Spring Cloud OpenFeignには、Spring CloudNetflixFeignでは利用できない新しいオプションと機能が含まれています。
最近、 Micrometer 、 Dropwizard Metrics 、 ApacheHTTPクライアント5、GoogleHTTPクライアントなどのサポートを利用できるようになりました。
7. 結論
この記事では、OpenFeignとNetflixFeignのSpringCloud統合を比較しました。 いつものように、 Spring CloudOpenFeignとNetflixFeignの両方のソースがGitHubにあります。