프로젝트를 개발하면 외부API를 사용하기위해 자료를 수집하면서 RestTemplate를 알게되었다
필자는 RestTemplate를 이용해서 개발을 진행할려 했지만 요청이 많으면 병목이 발생한다는 점이 있어 좀 더 찾아본 결과 WebClient를 발견하게 되서
개발을 들어가기전 이론적으로 정리할겸 글을 작성하게 됨.
무튼 그럼 그럼 시작해보자고
Spring WebClient는 Spring WebFlux에서 제공하는 비동기 & 논블로킹 HTTP 클라이언트입
기존의 RestTemplate
보다 더 유연하고 효율적인 방식으로 외부 API를 호출할 수 있음
RestTemplate
은 동기 방식이라 한 번에 하나의 요청만 처리WebClient
비동기 방식이라 여러 개의 요청을 동시에 보낼 수 있음자세한 이론은
https://blog.naver.com/seek316/223311717538
이 분이 글쓰신 거 참조 바람 :D
특징 | RestTemplate | WebClient |
---|---|---|
동작 방식 | 동기(Blocking) | 비동기(Non-Blocking) |
성능 | 요청이 많으면 병목 발생 | 효율적인 리소스 활용 |
사용 방식 | 스레드마다 요청 처리 | 이벤트 기반으로 요청 처리 |
지원 여부 | Spring 5 이후 비추천 | Spring WebFlux 기본 HTTP 클라이언트 |
간단한 API 요청은 RestTemplate도 가능하지만 대량 요청 & 비동기 처리는 WebClient가 훨씬 유리 할 듯 함
✅ 비동기 및 논블로킹 방식으로 성능 최적화
✅ 이벤트 기반으로 리소스 사용량 감소
✅ 다양한 요청 방식 (GET, POST, PUT, DELETE) 지원
✅ 타임아웃, 재시도 등의 설정 가능
WebClient가 기존 RestTemplate보다 확장성이 더 뛰어난 HTTP클라이언트