본문 바로가기
IT/Java

openfeign 이란?

by 성준하이 2023. 1. 29.
반응형
간단하게 소개를 하면 다음과 같다.
  1. REST Call을 위해 호출하는 클라이언트를 보다 쉽게 작성할 수 있도록 도와주는 라이브러리
  2. OpenFeign은 동일한 기능을 하는 RestTemplate 대비 interface를 작성하고 annotation을 붙여주면 세부적인 내용 없이 사용할 수 있기 편리한 기능 제공
  3. Timeout 같은 간단한 기능은 Hystrix 연동없이 실패에 대한 Callback 함수 구현 가능
  4. spring-cloud-starter-openfeign 라이브러리 추가로 손쉽게 사용 가능

 

적용법

1. 먼저 openfeign library 를 추가한다.

  • compile('org.springframework.cloud:spring-cloud-starter-openfeign’)

2. 다음은 main 함수에 사용한다는 annotation을 추가한다.

  • @EnableFeignClients

3. REST call을 할 REST API에 대한 FeignClient Interface 작성한다.

@FeignClient(name = "feign", url = "http://127.0.0.1:8081/")
public interface TestClient {

     @GetMapping("/testfeign")
     String testFeign(Person p);
}

이렇게 작성이 되면 testFeign 이라는 함수가 불려질때 http://127.0.0.1:8081/testfeign 으로 person 객체를 가지고 request를 보내게 된다.

 

4. 이어서 Interface call 실패에 대한 대안(fallback) 작성한다.

@Slf4j
@Component
public class TestClientFallbackFactory implements FallbackFactory<TestClient>{
  @Override
  public TestClient create(Throwable cause) {
    return new TestClient() {
      @Override
      public void testFeign(Person p) {
        log.debug("test fallback");
      }
    };
  }
}

5. 마지막으로 application.properties(yml)에 Feign속성 추가한다.

 

Common application properties

Various properties can be specified inside your application.properties file, inside your application.yml file, or as command line switches. This appendix provides a list of common Spring Cloud OpenFeign properties and references to the underlying classes t

cloud.spring.io

 

사용처

restful api 테스트로 많이 사용을 하기도 했으나 요즘엔 MSA 로 아키텍쳐가 변경이 되면서 서로 다른 MS에 request 와 response를 주고 받기 위해 많이 사용이 된다.

반응형

'IT > Java' 카테고리의 다른 글

LOG 란?  (13) 2023.02.05
spring data jpa의 @Query nativeQuery의 IN 절 처리  (7) 2023.02.03
java eclipse 에서 에러(The method METHOD is undefined for the type )  (9) 2023.01.27
Tymeleaf 란?  (7) 2023.01.24
[JASYPT] 프로퍼티 암호화  (4) 2023.01.23

댓글