그냥 내가 볼려고 메모한 것..
Feign Client
- Spring Cloud Feign을 의존성에 추가합니다.
- 인터페이스에 @FeignClient 어노테이션을 사용해 API를 선언합니다.
@FeignClient(name = "exampleClient", url = "https://example.com")
public interface ExampleClient {
@GetMapping("/resource/{id}")
ExampleResource getResourceById(@PathVariable("id") Long id);
@PostMapping("/resource")
ExampleResource createResource(@RequestBody ExampleResource resource);
}
WebClient
WebClient webClient = WebClient.builder()
.baseUrl("https://example.com")
.build();
// GET 요청 예제
Mono<ExampleResource> response = webClient.get()
.uri("/resource/{id}", 1)
.retrieve()
.bodyToMono(ExampleResource.class);
// 응답 처리
response.subscribe(System.out::println);
Feign Client vs WebClient
프로그래밍 방식 | 선언형 (인터페이스 기반) | 명령형/반응형 (함수형 API) |
동기/비동기 | 동기 방식으로 주로 사용됨 | 비동기 및 논블로킹 가능 |
코드 간결성 | 코드가 매우 간단 | 상대적으로 작성해야 할 코드 많음 |
사용 사례 | 마이크로서비스 간 통신에 적합 | 비동기 처리 및 높은 처리량 요구 |