Forskelle mellem Netflix Feign og OpenFeign

1. Oversigt

I denne vejledning beskriver vi forskellene mellem Spring Cloud Netflix Feign og Spring Cloud OpenFeign.

2. Feign

Feign gør det lettere at skrive webserviceklienter ved at tilbyde annotationsstøtte der giver os mulighed for at implementere vores kunder med bare grænseflader.

Oprindeligt blev Feign oprettet og udgivet af Netflix som en del af deres Netflix OSS-projekt. I dag er det et open source-projekt.

2.1. Spring Cloud Netflix Feign

Spring Cloud Netflix integrerer Netflix OSS-tilbud i Spring Cloud-økosystemet. Dette inkluderer Feign, Eureka, Ribbon og en lang række andre værktøjer og hjælpeprogrammer. Feign fik imidlertid sin egen Spring Cloud Starter for at give adgang til bare Feign.

2.2. OpenFeign

I sidste ende besluttede Netflix at stoppe med at bruge Feign internt og ophørte med sin udvikling. Som et resultat af denne beslutning overførte Netflix Feign fuldt ud til open source-samfundet under et nyt projekt ved navn OpenFeign.

Heldigvis modtager den fortsat enorm support fra open source-samfundet og har set mange nye funktioner og opdateringer.

2.3. Spring Cloud OpenFeign

I lighed med sin forgænger integrerer Spring Cloud OpenFeign forgængerprojektet i Spring Cloud-økosystemet.

Bekvemt tilføjer denne integration understøttelse af Spring MVC-annoteringer og giver de samme HttpMessageConverters.

Lad os sammenligne Feign-implementeringen, der findes i Spring Cloud OpenFeign, med en, der bruger Spring Cloud Netflix Feign.

3. Afhængigheder

Først skal vi tilføje spring-cloud-starter-feign og forår-sky-afhængigheder afhængigheder til vores pom.xml fil:

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

Bemærk, at dette bibliotek kun fungerer med Spring Boot 1.4.7 eller tidligere. Derfor vores pom.xml skal bruge kompatible versioner af enhver Spring Cloud-afhængighed.

4. Implementering med Spring Cloud Netflix Feign

Nu kan vi bruge @EnableFeignClients for at aktivere komponentscanning efter alle grænseflader, der bruger @FeignClient.

For hvert eksempel, som vi udviklede ved hjælp af Spring Cloud Netflix Feign-projektet, bruger vi følgende import:

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

Implementeringen af ​​alle funktioner er nøjagtig den samme for den gamle og den nye version.

5. Implementering med Spring Cloud OpenFeign

Sammenlignende indeholder vores Spring Cloud OpenFeign-tutorial det samme eksempel som implementeringen med Spring Netflix Feign.

Den eneste forskel her er, at vores import er fra en anden pakke:

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

Alt andet er det samme, hvilket ikke skulle komme som nogen overraskelse på grund af forholdet mellem disse to biblioteker.

6. Sammenligning

Grundlæggende er disse to implementeringer af Feign identiske. Vi kan tilskrive dette, at Netflix Feign er stamfar til OpenFeign.

Spring Cloud OpenFeign indeholder dog nye muligheder og funktioner, der ikke er tilgængelige i Spring Cloud Netflix Feign.

For nylig kan vi få support til Micrometer, Dropwizard Metrics, Apache HTTP Client 5, Google HTTP client og mange flere.

7. Konklusion

Denne artikel sammenlignede Spring Cloud-integrationer af OpenFeign og Netflix Feign. Som sædvanligt finder du kilderne på GitHub til både Spring Cloud OpenFeign og Netflix Feign.