1. 소개

Netflix에서 만든 것으로 웹 서비스 클라이언트를 보다 쉽게 개발할 수 있도록 도와주는 도구이다.

2. 사용법

  • 의존성 추가 (spring-cloud-starter-feign)
  • @EnableFeignClients 어노테이션 추가 : @FeignClient(name="뭐시기")

3. 클라이언트

ApacheHttpClient와 OkHttpClient를 지원한다. 

디폴트는 feign.Client.Default#Default으로 정의한 것이다.

4. RestTemplate vs Feign

요즘에는 RestTemplate을 많이 사용하고 있긴 하지만 유지보수의 어려움이 있다. (Request 헤더, Contents 타입 등을 반복적으로 설정해야 하는 등)

Feign은 선언적 인터페이스를 작성하는 측면, 어노테이션을 선언하기만 하면 된다는 점 등의 장점이 있다. 

5. Eureka

Feign Client는 서비스 디스커버리로부터 필요한 모든 주소 정보를 가져오는 부하 분산 HTTP 클라이언트를 제공하기 위해 Eureka, Ribbon과 통합된다.