본문 바로가기
Spring/SpringCloud

[Open Feign] Feign을 이용한 간단한 예제

by 행운의나무 2023. 3. 6.
728x90
반응형

Open Feign

  • Netflix에서 처음 만들어진 선언적인(어노테이션 이용) HTTP Client Binder
  • interface를 작성하고, annotaion을 선언한다.
  • 마이크로 서비스 간에 통신 방법 중 하나로 많이 사용된다.
    • 마이크로 서비스의 단점
      • API 호출 증가 -> 분산 시스템에서 API 호출부분을 계속 만들어줘야한다.
    • Feign의 장점
      • 인터페이스 작성을 통해 재사용성을 높인다.

목표

- Provider 서버로 api 제공
- Client 서버로 feign을 이용해 api 호출


Provider 서버

  • 일반적으로 사용되고 있는 간단한 API 서버 작성

의존성 추가

dependencies{ 
	implementation 'org.springframework.boot:spring-boot-starter-web' 
}

서버 포트 변경

server:
    port: 8081

컨트롤러

@RestController  
public class ProviderController {  

    @GetMapping(value = "provider")  
    public String examProvider(){  
        return "provider";  
    }  
}

Client 서버

의존성 추가

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
     // Feign  
     implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'
}

설정

server:
    port: 8082

feign:
    client:
        config:
            default:
                connectionTimeout: 1000
                readTimeout: 3000
                loggerLevel: FULL

인터페이스 정의

@FeignClient(value = "provider", url = "http://localhost:8081")  
public interface ProviderCallFeignClient {  

    @GetMapping("/provider")  
    String callProvider();  
}

Controller

@RestController  
@RequiredArgsConstructor  
public class FeignClientController {  

    private final ProviderCallFeignClient providerCallFeignClient;  

    @GetMapping("client")  
    public ResponseEntity client(){  
        System.out.println(providerCallFeignClient.callProvider());  
        return ResponseEntity.ok().body(providerCallFeignClient.callProvider());  
    }  
}

EnableFeignClients 추가

@EnableFeignClients  
@SpringBootApplication  
public class FeignClientApplication {  

    public static void main(String[] args) {  
        SpringApplication.run(FeignClientApplication.class, args);  
    }  
}

결과

  • 8081 포트로 provider 서버에 접속 시 "provider"호출
  • 8082 포트로 client 서버에 접속 시 feign을 이용해 provide 서버에 call하여 정보를 가져온다.

provider 접속 (8081)

 

client  접속 (8082)

 

쿠팡으로 연결 클릭

 

제주삼다수 그린 무라벨

COUPANG

www.coupang.com

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음

반응형