1. 개요

이 튜토리얼에서는 Spring Cloud Netflix FeignSpring Cloud OpenFeign 의 차이점을 설명합니다 .

2. Feign

Feign 인터페이스만으로 클라이언트를 구현할 수있는 어노테이션 지원 제공하여 웹 서비스 클라이언트 작성을 더 쉽게 만듭니다 .

원래 Feign은 Netflix OSS 프로젝트의 일부로 Netflix에서 만들고 출시했습니다 . 현재는 오픈 소스 프로젝트입니다.

2.1. 스프링 클라우드 넷플릭스 페이 인

Spring Cloud Netflix는 Netflix OSS 제품을 Spring Cloud 에코 시스템에 통합합니다 . 여기에는 Feign, Eureka, Ribbon 및 기타 다양한 도구와 유틸리티가 포함됩니다. 그러나 Feign에는 Feign에만 액세스 할 수 있도록 자체 Spring Cloud Starter가 제공되었습니다.

2.2. OpenFeign

결국 Netflix는 내부적으로 Feign 사용을 중단하기로 결정하고 개발을 중단했습니다. 이 결정의 결과로 Netflix는 OpenFeign 이라는 새 프로젝트에 따라 Feign을 오픈 소스 커뮤니티로 완전히 이전 했습니다 .

다행히도 오픈 소스 커뮤니티에서 계속해서 엄청난 지원을 받고 있으며 많은 새로운 기능과 업데이트를 보았습니다.

2.3. 스프링 클라우드 OpenFeign

이전 프로젝트와 마찬가지로 Spring Cloud OpenFeign은 이전 프로젝트를 Spring Cloud 생태계에 통합합니다.

편리하게이 통합은 Spring MVC 어노테이션에 대한 지원을 추가하고 동일한 HttpMessageConverters를 제공합니다 .

Spring Cloud OpenFeign 에있는 Feign 구현 을 Spring Cloud Netflix Feign을 사용 하는 구현과 비교해 보겠습니다 .

3. 의존성

먼저 spring-cloud-starter-feignspring-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 , Apache HTTP Client 5 , Google HTTP 클라이언트 등을 지원할 수 있습니다 .

7. 결론

이 기사에서는 OpenFeign과 Netflix Feign의 Spring Cloud 통합을 비교했습니다. 평소와 같이 Spring Cloud OpenFeignNetflix Feign에 대한 소스는 GitHub에서 찾을 수 있습니다 .