RestTemplate과 webClient, RestClient에 대해서 질문드립니다.
25
작성한 질문수 6
토비님 안녕하세요!
강의를 통해 템플릿-콜백 패턴을 배우니 그동안 무심코 지나쳤던 용어들이 어떻게 만들어졌는지 알 수 있는거 같아서 또 한번 배우고 있습니다.
강의를 듣다 문득 궁금한 부분이 생겨서 질문드립니다.
회사에서는 웹플럭스를 사용하고 있어서 webClient를 사용하고 있는데요.
~템플릿이 아닌 ~클라이언트로 끝나는게 예전에는 그냥 용어가 달라졌구나 싶었는데,
강의를 수강해보니 이것도 의미가 있을거 같아서 여쭤봅니다.
비동기를 지원하는것 뿐만 아니라, webClient의 빌더패턴으로 사용자가 직접 조립하는 방식에서 주체가 달라졌기 때문에 이름 또한 변경된 부분일까요?
좋은 강의 감사드립니다!
답변 2
0
WebClient는 스프링 초기부터 있던 RestTemplate을 대체하는 프로그래밍 API로 등장한 것인데요. 소개 당시 주목을 받았던 Reactive 방식의 비동기 API 호출을 지원하기 위해서 동기/블록킹 방식인 RestTemplate과 다른 접근 방법과 사용법을 가지고 있습니다.
비동기 방식 API 호출 외에도 스프링 개발진이 Modern API 스타일이라고 부르는, 메소드를 체이닝하면서 호출 방법에 대한 스펙을 쌓아두고 이용하게 한 것도 특징입니다. 복잡한 세팅이 필요한 API 호출인 경우에도 직관적으로 이해될 수 있는 표현력이 뛰어난 메소드의 조합으로 코드가 작성이 되어서 편리하죠.
동기/블록킹 방식의 API 호출에도 WebClient와 같은 스타일의 모던 API를 적용한 RestClient도 있습니다.
RestTemplate처럼 템플릿/콜백 패턴의 활용이 없어진 것은 아닙니다. 자바 8에서 람다식이 등장하면서 콜백은 예전처럼 익명 클래스를 매번 사용할 필요가 없어지고 훨씬 간결하게 언어레벨에서 지원하는 스타일로 개발이 가능해졌죠. 이런 람다식의 활용은 이제 템플릿/콜백 패턴이라는 이름을 굳이 사용하지 않더라도 WebClient, RestClient 등의 모던한 스프링 API에서 적극 사용됩니다. 그 동작 원리는 기존 템플릿 방식과 동일합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
suco님께서 궁금해하시는 RestTemplate과 WebClient의 차이점에 대해 설명드리겠습니다.
Spring Boot에서 RestTemplate과 WebClient는 모두 원격 REST 서비스를 호출하기 위해 사용됩니다. 하지만 두 클래스는 약간 다른 점을 가지고 있어요.
RestTemplate: 이 클래스는 기존의 방식으로, 동기식 API 호출을 지원합니다. 따라서, 서버에 요청을 보내고 그 응답을 받을 때까지 대기하는 블로킹 방식으로 동작합니다.
WebClient: 이것은
RestTemplate의 비동기식 버전으로, 스프링 WebFlux를 사용하면WebClient를 사용할 수 있습니다. 이 클라이언트는 더욱 반응적으로, 즉 비동기로 동작하며, 이를 통해 효율적인 리소스 관리를 할 수 있습니다.
웹플럭스를 사용하면서 비동기를 지원하기 때문에 WebClient는 훨씬 더 유연하고 고성능의 비동기 API 요청을 처리할 수 있도록 설계되었습니다.
말씀하신 대로 WebClient는 빌더 패턴을 통해 사용자가 직접 구성할 수 있는 객체로, 설정이 용이하며 신축성 있는 구성을 지원하기 때문에 주체가 달라지는 점 때문에 이름도 다르게 짓는 경향이 강화되었습니다.
WebClient의 사용 방법에 대해 더 알고 싶으시다면, 더 많은 정보를 WebClient 사용법 안내 문서에서 확인하실 수 있습니다.
강의 수강에 힘이 되셨기를 바라며, 좋은 학습 이어나가시길 바랍니다!
수업을 잘 듣고 있습니다.
0
116
2
jackson(3.0.2 버전) ObjectMapper.readValue 에러타입
0
126
2
템플릿과 콜백의 역할 경계를 구분하는 기준
0
119
1
테스트를 작성하지않아도 되는 경우
0
102
2
오브젝트 정의 중 배열에 대해서
0
79
2
스프링 레거시를 이용하는 회사에서 일을 하게 될것같은데
0
133
2
JpaTransactionManager에 대해 궁금합니다.
0
94
2
스프링빈과 Clock 클래스 관련
0
58
2
Seprate Interface 패턴에 대한 궁금증
0
58
2
테스트의 기준을 어떤식으로 설정하는 것이 바람직한 테스트일까요 ?
0
68
2
오브젝트와 인스턴스
0
47
1
WebApiExRateProvider 템플릿 콜백 패턴을 적용하면서 테스트 코드를 만들어보았습니다.
0
78
2
템플릿 콜백 패턴 관련하여 궁금한 것이 있습니다!
0
76
2
상태 변경 API 질문
0
135
2
빈에 대한 질문
0
102
1
안녕하세요.
0
153
2
Payment 엔티티에 exRateProvider 주입
0
112
1
@Transactional private 사용유무
0
172
1
JdbcClient 생성 질문
0
198
2
안녕하세요 PaymentConfig 질문드립니다.
0
117
2
[공유] 윈도우 사용자를 위한 http 명령어 오류 해결 방법
0
255
2
생성자 파라미터성자 파라미터
0
250
2
토비님 ! BigDecimal 관련 링크를 못찾겠어요
2
359
2
인터페이스 사용에 관하여 질문드립니다.
0
322
3





