programing

Web Client vs Rest Template

telecom 2023. 3. 16. 21:07
반응형

Web Client vs Rest Template

스프링 5 기준:

Web Client는 웹 요청을 수행하기 위한 주요 진입 지점을 나타내는 인터페이스입니다.

Spring Web Reactive 모듈의 일부로 작성되었으며, 이러한 시나리오에서는 기존의 RestTemplate를 대체할 예정입니다.새로운 클라이언트는 HTTP/1.1 프로토콜을 통해 작동하는 반응형 논블로킹 솔루션입니다.

즉, Spring 5로 업그레이드하려면 RestTemplate를 사용하여 이전 애플리케이션을 재코딩해야 합니까?

아니면 봄 5에 RestTemplate를 사용할 때 회피책이 있습니까?

아니요, RestTemplate는 (적어도 현시점에서는) 계속 존재합니다.WebClient로 교체할 필요가 없습니다.
주요 차이점 중 하나는 RestTemplate가 동기화되어 있고 차단되어 있다는 것입니다.즉, Rest Call을 실행할 때는 응답이 돌아올 때까지 기다려야 계속 진행할 수 있습니다.

그러나 Web Client는 이와 정반대입니다.발신자는 응답이 돌아올 때까지 기다릴 필요가 없습니다.대신 응답이 있을 때 그에게 통지할 것이다.

이러한 기능이 필요한 경우 Resttemplate를 WebClient로 교체해야 합니다.
webclient의 동기 처리와 같은 Rest 템플릿을 실제로 구현할 수 있습니다..block()하지만 다른 방법은 불가능하다.

편집:

Rest Template는 향후 버전(> 5.0)에서 폐지될 예정이며 향후 주요 신기능은 추가되지 않습니다.

Java Doc에 따르면 RestTemplate는 유지보수 모드가 됩니다.스프링 팀은 가능하면 WebClient를 사용할 것을 권장합니다.

메모: 5.0 이후로는 비블로킹 리액티브 org.springframework.web.reactive.client 입니다.WebClient는 RestTemplate를 대체하는 최신 기능을 제공하며 동기 및 비동기 및 스트리밍 시나리오를 효율적으로 지원합니다.RestTemplate는 향후 버전에서 폐지될 예정이며 향후 주요 신기능은 추가되지 않을 예정입니다.

RestTemplate별로 추천되지 않습니다.하지만 그것은 미래에는 진화되지 않을 것이다.그래서 고수하고 있다RestTemplate필요한 만큼만 해준다면 완벽하게 유효합니다.

즉, 스트리밍, 분산/수집 또는 커스텀 타임아웃과 같은 특정 사용 패턴이 필요한 경우, 이 기능은RestTemplate '어울리지 않다'를 써야 요.WebClient★★★★★★ 。

사용하겠습니다.WebClient차단 어플리케이션에서도 괜찮습니다.「」를 사용합니다.block()Spring MVC 컨트롤러는 리액티브 리턴 타입을 부분적으로 지원합니다.

WebClient는 비블로킹클라이언트, RestTemplate는 블로킹클라이언트입니다

오랫동안 봄은 웹 고객 역할을 한다.후드에서 RestTemplate는 대상 모델에 기반한 Java API를 사용합니다.즉, 클라이언트가 응답을 받을 때까지 문제가 차단됩니다.차단 코드의 문제는 메모리 문자열과 CPU 사이클이 존재하기 때문입니다.결과를 내기 위해 필요한 낮은 서비스를 기다리는 많은 애플리케이션을 고려해 보겠습니다.조만간 결과에 대한 요청이 수집됩니다.그 결과, 프로그램은 많은 문제를 발생시켜 스레드 풀이 고갈되거나 사용 가능한 메모리가 모두 점유됩니다.CPU 스위칭에 의한 퍼포먼스도 경험할 수 있습니다.

Spring Web Client와Rest Template

WebClient는 동기 콜과 비동기 콜을 지원합니다.RestTemplate는 동기 콜만 지원합니다.RestTemplate가 비동기 동작을 필요로 하지 않는 한 오래된 코드를 변경할 필요가 없습니다.

언급URL : https://stackoverflow.com/questions/47974757/webclient-vs-resttemplate

반응형