1. Feign Client 란?

1) Feign Client는 web service 클라이언트를 보다 쉽게 작성할 수 있도록 도와줍니다.

2) interface를 작성하고 annotation을 붙여주면 세부적인 내용 없이 사용할 수 있기 때문에 코드 복잡도가 낮아집니다.

3) Netflix 에서 만들어졌고, spring-cloud-starter-openfeign 으로 스프링 라이브러리에서 사용할 수 있습니다.

간단한 사용법에 대해 알아봅시다.

2. 사용법

0) 시나리오

컨트롤러 2개 1) "/", 2) "/testfeign" 를 한 서버에서 사용할 것이고, 결과적으로 Feign Client가 자신의 서버에 http 요청을 보내서 응답을 받는 형태가 됩니다.

스크린샷 2019-10-06 오후 3.42.56.png

1) 스프링부트 프로젝트 만들기

spring start에서 스프링부트 프로젝트를 만들었습니다. (maven, gradle 상관없습니다.) 라이브러리는 web만 넣어주었습니다.

스크린샷 2019-10-06 오후 2.57.09.png

2) feign client 라이브러리 넣기

  • maven 일 경우
    pom.xml에 다음과 같이 작성해줍니다.

  • gradle 일 경우
    build.gradle에 다음과 같이 작성해줍니다.

3) Application.java

Application.java 파일에 @EnableFeignClients annotation을 작성해서 Feign Client를 사용할 것임을 알려줍니다.

4) Client 작성

1) 인터페이스로 작성한다.@FeignClient 을 작성하면 인터페이스를 클래스로 구체화 시킬 필요가 없습니다. annotation이 작성해준다.

2) annotation을 통해 요청할 url을 넣어준다.

3) 메소드 위의 annotation을 통해 요청할 세부 URL을 설정한다.

5) Service 작성

다읔과 같이 Feign 클라이언트를 사용하는 Service를 작성해줍니다.

6) Controller 작성

1) 메인 페이지로 접근
2) Feign Client가 /testfeign 으로 get 호출
3) 반환값 받고 메인에서 보여줍니다.

7) 확인

스프링부트 프로젝트를 실행하고 http://localhost:8080/ (application.properties default값이 8080포트) 으로 접근하면 다음과 같이 결과값을 받을 수 있습니다.

스크린샷 2019-10-06 오후 3.25.26.png

3. 느낀점

1) 코드 복잡도

인터페이스를 간단하게 작성하고, 바로 사용할 수 있기 때문에 코드 복잡도가 낮아졌습니다. 이로 인해 서비스간 통신을 더 원활하게 할 수 있음을 알게되었습니다.

2) 세부적인 연구, MSA

단순한 GET, POST 이외에 실무에서의 조금더 복잡한 상황에 대해 알아보겠습니다.

profile
callmeskye

0개의 댓글