Differenze tra Netflix Feign e OpenFeign

1. Panoramica

In questo tutorial, descriveremo le differenze tra Spring Cloud Netflix Feign e Spring Cloud OpenFeign.

2. Fingere

Feign semplifica la scrittura dei client dei servizi Web fornendo supporto per le annotazioni che ci consente di implementare i nostri clienti solo con le interfacce.

Originariamente, Feign è stato creato e pubblicato da Netflix come parte del loro progetto Netflix OSS. Oggi è un progetto open source.

2.1. Spring Cloud Netflix Feign

Spring Cloud Netflix integra le offerte Netflix OSS nell'ecosistema Spring Cloud. Ciò include Feign, Eureka, Ribbon e una miriade di altri strumenti e utilità. Tuttavia, Feign ha ricevuto il proprio Spring Cloud Starter per consentire l'accesso solo a Feign.

2.2. OpenFeign

Alla fine, Netflix ha deciso di smettere di usare Feign internamente e ha interrotto il suo sviluppo. Come risultato di questa decisione, Netflix ha trasferito completamente Feign alla comunità open source con un nuovo progetto chiamato OpenFeign.

Fortunatamente, continua a ricevere un immenso supporto dalla comunità open source e ha visto molte nuove funzionalità e aggiornamenti.

2.3. Spring Cloud OpenFeign

Simile al suo predecessore, Spring Cloud OpenFeign integra il progetto predecessore nell'ecosistema Spring Cloud.

Convenientemente, questa integrazione aggiunge il supporto per le annotazioni Spring MVC e fornisce gli stessi HttpMessageConverters.

Confrontiamo l'implementazione di Feign trovata in Spring Cloud OpenFeign con quella che utilizza Spring Cloud Netflix Feign.

3. Dipendenze

Innanzitutto, dobbiamo aggiungere le dipendenze spring-cloud-starter-feign e spring-cloud- dependencies al nostro file pom.xml :

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

Tieni presente che questa libreria funziona solo con Spring Boot 1.4.7 o versioni precedenti. Pertanto il nostro pom.xml deve utilizzare versioni compatibili di qualsiasi dipendenza Spring Cloud.

4. Implementazione con Spring Cloud Netflix Feign

Ora possiamo usare @EnableFeignClients per abilitare la scansione dei componenti per qualsiasi interfaccia che utilizza @FeignClient .

Per ogni esempio che abbiamo sviluppato utilizzando il progetto Spring Cloud Netflix Feign, utilizziamo le seguenti importazioni:

import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.cloud.netflix.feign.EnableFeignClients;

L'implementazione di tutte le funzionalità è esattamente la stessa per la vecchia e la nuova versione.

5. Implementazione con Spring Cloud OpenFeign

Comparativamente, il nostro tutorial Spring Cloud OpenFeign contiene lo stesso esempio dell'implementazione con Spring Netflix Feign.

L'unica differenza qui è che le nostre importazioni provengono da un pacchetto diverso:

import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.EnableFeignClients;

Tutto il resto è lo stesso, il che non dovrebbe sorprendere a causa della relazione tra queste due biblioteche.

6. Confronto

Fondamentalmente, queste due implementazioni di Feign sono identiche. Possiamo attribuire questo al fatto che Netflix Feign sia l'antenato di OpenFeign.

Tuttavia, Spring Cloud OpenFeign include nuove opzioni e funzionalità che non sono disponibili in Spring Cloud Netflix Feign.

Di recente, possiamo ottenere supporto per Micrometer, Dropwizard Metrics, Apache HTTP Client 5, Google HTTP client e molti altri.

7. Conclusione

Questo articolo ha confrontato le integrazioni Spring Cloud di OpenFeign e Netflix Feign. Come al solito, troverai le fonti su GitHub sia per Spring Cloud OpenFeign che per Netflix Feign.