Відмінності між Netflix Feign та OpenFeign

1. Огляд

У цьому підручнику ми будемо описувати відмінності між Spring Cloud Netflix Feign та Spring Cloud OpenFeign.

2. удаваність

Feign полегшує написання клієнтів веб-сервісу, надаючи підтримку анотацій, що дозволяє нам реалізовувати наших клієнтів лише за допомогою інтерфейсів.

Спочатку Feign був створений і випущений Netflix в рамках їх проекту OSF Netflix. Сьогодні це проект з відкритим кодом.

2.1. Весняна хмара Прикид 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- зависимостей до нашого файлу pom.xml :

 org.springframework.cloud spring-cloud-starter-feign 1.4.7.RELEASE   org.springframework.cloud spring-cloud-dependencies Hoxton.SR8 pom import 

Зверніть увагу, що ця бібліотека працює лише з 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-клієнт та багато іншого.

7. Висновок

У цій статті було порівняно інтеграцію Spring Cloud з OpenFeign та Netflix Feign. Як завжди, ви знайдете джерела на GitHub як для Spring Cloud OpenFeign, так і для Netflix Feign.