본문 바로가기

삽질

HttpUrlConnection, RestTemplate, WebClient의 특징과 장단점

HttpUrlConnection

특징

  • java에서 제공하는 기본적인 HTTP 클라이언트
  • 저수준 API로 HTTP 요청 및 응답을 다루는데 사용됨
  • HTTP 및 HTTPS를 지원하며, 각 요청마다 새로운 연결을 만들어 사용
  • 직접적인 제어 가능

장점

  • JDK의 일부로 제공되어 외부 라이브러리의 의존성이 없음
  • 기본적인 HTTP 통신을 다루는데 유용

단점

  • 낮은 수준의 API로 인해 응답 처리가 복잡
  • 코드의 가독성이 낮음

 

RestTemplate

특징

  • Spring이 제공하는 HTTP 클라이언트
  • 간단한 API를 통해 HTTP 요청 처리
  • 동기 방식 및 Blocking I/O 사용

장점

  • Spring 기반 애플리케이션 사용에 유용
  • 간단한 사용법

단점

  • 동기 방식으로 동작하여 비효율적일 수 있음
  • Non-Blocking, Reactive한 방식을 지원하지 않음

💡 공식문서에 추후 deprecated 될 것이라 명시되어 있음

 

WebClient

특징

  • Spring 5에서 소개된 비동기 및 함수형 스타일의 HTTP 클라이언트
  • Reactor 프로젝트의 Mono 및 Flux와 같은 타입을 사용하여 Reactive 프로그래밍 지원
  • 비동기로 동작하며, Non-blocking I/O 지원

장점

  • 비동기 및 리액티브 프로그래밍 모델을 지원하여 성능 및 확장성 향상 가능
  • Non-blocking I/O를 통해 효율적인 리소스 활용 가능

단점

  • 학습의 어려움
  • 복잡한 코드 작성이 필요할 수 있음
  • web-flux 의존성 필요

 

추가로 공부할 만한 내용

HttpInterface의 등장 (SpringBoot 3.0)

  • Http 요청을 위한 서비스를 인터페이스와 애노테이션으로 정의

RestClient의 등장 (SpringBoot 3.2)

  • 기존의 WebClient는 web-flux 의존성 필요.
  • 반면에, RestClient는 web-flux의 의존성이 필요 없음