1. Обзор
В этом руководстве мы собираемся описать различия между Spring Cloud Netflix Feign и Spring Cloud OpenFeign .
2. Притворяться
Feign упрощает написание клиентов веб-сервисов, предоставляя поддержку аннотаций , которая позволяет нам реализовывать наши клиенты только с интерфейсами.
Первоначально Feign был создан и выпущен Netflix в рамках их проекта Netflix OSS . Сегодня это проект с открытым исходным кодом.
2.1. Притворство Spring Cloud Netflix
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 .
Давайте сравним реализацию Feign, найденную в Spring Cloud OpenFeign , с реализацией, использующей Spring Cloud Netflix Feign.
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>
Обратите внимание, что эта библиотека работает только с 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 , HTTP-клиента Apache 5 , HTTP-клиента Google и многих других.
7. Заключение
В этой статье сравнивались интеграции OpenFeign и Netflix Feign с Spring Cloud. Как обычно, вы найдете исходники на GitHub как для Spring Cloud OpenFeign, так и для Netflix Feign .