RestTemplate
- RestTemplate는 스프링 프레임워크에서 제공하는 HTTP 클라이언트 라이브러리이다.
- 웹 기반(HTTP)에서 통신하기 위해 사용된다
1. 특징
- 멀티 스레드, 블로킹방식을 사용한다
- 블로킹 방식이기 떄문에 응답을 받을 때까지 해당 스레드를 사용할 수 없고, 스레드가 부족해지면 Queue에 요청을 대기시킨다
- 다만 블로킹 방식이기 때문에 Queue에 요청대기가 시작되는 순간부터 서비스가 느려진다
- 응답을 받을 때까지 커넥션을 유지하기 때문에 요청을 수행하는 쓰레드마다 응답받는 시간동안 가용할 수 없게 된다
- RestTemplate에서 사용할 쓰레드풀을 별도로 설정해서 운영해야 한다
- 무한정 기다리면 스레드가 부족하기 때문에 제한시간도 설정해줘야 한다
WebClient
- WebFlux기반 라이브러리로 비동기 넌블럭 통신을 지원한다
1. 특징
- 싱글 스레드 넌블럭 방식을 사용한다
- WebFlux 의존성 추가해야 하기 때문에 Spring MVC와는 안맞을 수 있다

RestClient
- Spring framework 6.1(Spring Boot 3.2)에 새로 추가된 동기식 Http Client이다
- 등장이유
- RestTemplate는 2009년에 추가된 오래된 방식으로 수많은 메서드가 오버로딩되어있어 기능을 사용하는데 혼란을 줄 수 있다
- Non-Blocking 환경에서는 적절하지 않다
- Spring MVC 환경에서 현대적인 방식으로 Http Client를 사용하기 위해 등장했다
RestClient restClient = RestClient.create();
ResponseEntity<String> entity1 = restClient.get()
.uri("http://example.com")
.retrieve()
.toEntity(String.class);
참고) https://poalim.tistory.com/59
HttpClient
- Java에서 제공하는 Http Client이다
- 비동기 및 동기 방식의 HTTP(S) 요청을 손쉽게 수행할 수 있게 해주는 클래스입니다. HttpClient를 사용하면 성능이 향상되고, HTTP/2 및 Web Socket을 지원하는 등 여러 가지 이점을 제공한다
FeignClient
- Spring Cloud 프로젝트 일부로서, 서비스 간 Http 통신을 자동화하는데 사용된다
- 애플리케이션 간의 서비스 호출을 단순화하고 클라이언트 코드를 간결하게 유지할 수 있도록 지원한다
Spring Boot 3 – HTTP 클라이언트 비교
✅ 클라이언트 요약 비교
| 클라이언트 | 동기/비동기 | 사용 편의성 | 커스터마이징 | Spring 권장 여부 | 특징 / 주요 용도 |
|---|
| RestTemplate | ✅ 동기 | ✅ 쉬움 | 🔶 제한적 | ❌ 더 이상 권장 X | 간단한 요청, 레거시 프로젝트 유지에 적합 |
| WebClient | ✅ 비동기 / 리액티브 | 🔶 약간 복잡 | ✅ 매우 유연 | ✅ 적극 권장 | 비동기, 고성능, 체이닝 지원 |
| RestClient (Spring 6+) | ✅ 동기 | ✅ 매우 쉬움 | ✅ 적절함 | ✅ 기본 권장 | RestTemplate 대체, 최신 동기 방식 |
| HttpClient (Apache/JDK) | 동기 또는 비동기 | ❌ 복잡 | ✅ 매우 유연 | ❌ 비권장 | Spring 외부에서 사용, 저수준 네트워크 제어 |
| FeignClient | ✅ 동기 | ✅ 인터페이스 기반 | 🔶 제한적 | 🔶 일부 상황 권장 | 선언형 HTTP 호출, 마이크로서비스 간 통신에 적합 |
🔍 사용 예시
✅ RestClient
RestClient client = RestClient.create();
String result = client.get()
.uri("https://api.example.com")
.retrieve()
.body(String.class);
참고) https://incheol-jung.gitbook.io/docs/q-and-a/spring/resttemplate
https://weight-devlog.tistory.com/46
https://adjh54.tistory.com/234