1. 概要

このチュートリアルでは、 Spring Cloud NetflixFeignSpring 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クライアント5GoogleHTTPクライアントなどのサポートを利用できるようになりました。

7. 結論

この記事では、OpenFeignとNetflixFeignのSpringCloud統合を比較しました。 いつものように、 Spring CloudOpenFeignNetflixFeignの両方のソースがGitHubにあります。