Verschillen tussen Netflix Feign en OpenFeign

1. Overzicht

In deze tutorial gaan we de verschillen beschrijven tussen Spring Cloud Netflix Feign en Spring Cloud OpenFeign.

2. Veinzen

Feign maakt het schrijven van webserviceclients eenvoudiger door ondersteuning voor annotaties te bieden waarmee we onze klanten kunnen implementeren met alleen interfaces.

Oorspronkelijk werd Feign gemaakt en uitgebracht door Netflix als onderdeel van hun Netflix OSS-project. Tegenwoordig is het een open-sourceproject.

2.1. Spring Cloud Netflix Feign

Spring Cloud Netflix integreert het Netflix OSS-aanbod in het Spring Cloud-ecosysteem. Dit omvat Feign, Eureka, Ribbon en tal van andere tools en hulpprogramma's. Feign kreeg echter zijn eigen Spring Cloud Starter om alleen toegang te krijgen tot Feign.

2.2. OpenFeign

Uiteindelijk besloot Netflix om Feign niet meer intern te gebruiken en stopte de ontwikkeling ervan. Als gevolg van deze beslissing heeft Netflix Feign volledig overgedragen aan de open-sourcecommunity onder een nieuw project genaamd OpenFeign.

Gelukkig krijgt het nog steeds enorme steun van de open-sourcecommunity en heeft het veel nieuwe functies en updates gezien.

2.3. Spring Cloud OpenFeign

Net als zijn voorganger, integreert Spring Cloud OpenFeign het voorgangerproject in het Spring Cloud-ecosysteem.

Handig is dat deze integratie ondersteuning toevoegt voor Spring MVC-annotaties en dezelfde HttpMessageConverters biedt.

Laten we de Feign-implementatie in de Spring Cloud OpenFeign vergelijken met een die Spring Cloud Netflix Feign gebruikt.

3. Afhankelijkheden

Eerst moeten we de spring-cloud-starter-veinzen en spring-cloud-afhankelijkheden afhankelijkheden van onze pom.xml het dossier:

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

Houd er rekening mee dat deze bibliotheek alleen werkt met Spring Boot 1.4.7 of eerder. Daarom onze pom.xml moet compatibele versies van alle Spring Cloud-afhankelijkheden gebruiken.

4. Implementatie met Spring Cloud Netflix Feign

Nu kunnen we gebruiken @EnableFeignClients om het scannen van componenten in te schakelen voor alle interfaces die gebruikmaken van @Feyenoord.

Voor elk voorbeeld dat we hebben ontwikkeld met behulp van het Spring Cloud Netflix Feign-project, gebruiken we de volgende import:

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

De implementatie van alle features is exact hetzelfde voor de oude en de nieuwe versie.

5. Implementatie met Spring Cloud OpenFeign

Ter vergelijking: onze Spring Cloud OpenFeign-tutorial bevat hetzelfde voorbeeld als de implementatie met Spring Netflix Feign.

Het enige verschil hier is dat onze import uit een ander pakket komt:

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

Al het andere is hetzelfde, wat geen verrassing zou moeten zijn vanwege de relatie tussen deze twee bibliotheken.

6. Vergelijking

In wezen zijn deze twee implementaties van Feign identiek. We kunnen dit toeschrijven aan Netflix Feign als de voorouder van OpenFeign.

Spring Cloud OpenFeign bevat echter nieuwe opties en functies die niet beschikbaar zijn in Spring Cloud Netflix Feign.

Sinds kort kunnen we ondersteuning krijgen voor Micrometer, Dropwizard Metrics, Apache HTTP Client 5, Google HTTP-client en nog veel meer.

7. Conclusie

In dit artikel werden de Spring Cloud-integraties van OpenFeign en Netflix Feign vergeleken. Zoals gewoonlijk vind je de bronnen op GitHub voor zowel Spring Cloud OpenFeign als Netflix Feign.