장정우님이 지음, [스프링부트 핵심가이드 :: 스프링 부트를 활용한 애플리케이션 개발 실무] 책을 읽고 정리한 필기입니다.📢

WebClient 란?

일반적으로 실제 운영환경에 적용되는 애플리케이션은 정식 버전으로 출시된 스프링 부트의 버전보다 낮은 경우가 많다. 그렇기 때문에 RestTemplate을 많이 사용하고 있다. 하지만 최신 버전에서는 RestTemplate이 지원 중단되어 WebClient를 사용할 것을 권고하고 있다. 이러한 흐름에 맞춰 현재 빈번히 가용되고 있는 RestTemplate과 앞으로 많이 사용될 WebClient를 모두 알고 있는 것이 좋다.

Spring WebFlux는 HTTP 요청을 수행하는 클라이언트로 WebClient를 제공한다. WebClient는 리액터(Reactor) 기반으로 동작하는 API이다. 리액터 기반이므로 스레드와 동시성 문제를 벗어나 비동기 형식으로 사용할 수 있다. WebClient의 특징을 먼저 살펴보겠다.

  • 논블로킹(Non-Blocking) I/O를 지원한다.
  • 리액티브 스트림(Reactive Streams)의 백프레셔(Back Pressure)를 지원한다.
  • 적은 하드웨어 리소스로 동시성을 지원한다.
  • 함수형 API를 지원한다.
  • 동기, 비동기 상호작용을 지원한다.
  • 스트리밍을 지원한다.

최근 프로그래밍 추세에 맞춰 스프링에도 리액티브 프로그래밍(Reactive Programming)이 도입되면서 여러 동시적 기능이 제공되고 있다. 다만 이 책에서는 리액티브 프로그래밍을 자세히 다루지 않으며, WebClient 를 사용할 수 있는 환경을 구성하고 사용하는 방법에 대해서만 다룰 예정이다.

WebClient 구성

WebClient를 사용하려면 WebFlux 모듈에 대한 의존성을 추가해야 한다. 아래와 같이 pom.xml파일에 의종성을 추가한다.


1
2
3
4
5
6
7
8
<dependencies>
    ..생략..
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
    ..생략..
</dependencies>


WebFlux는 클라이언트와 서버 간 리액티브 애플리케이션 개발을 지원하기 위해 스프링 프레임워크 5에서 새롭게 추가된 모듈이다. pom.xml에 위와 같이 WebFlux를 추가하면 WebClient를 사용할 수 있는 환경이 만들어진다.

SpringBoot 카테고리 내 다른 글 보러가기

댓글남기기