Spring 에서 사용하는 Rest Client란?
HTTP기반의 RESTful 웹 서비스와 상호작용 하기 위한 도구.
Spring은 RestTemplate와 WebClient 두 가지 주요 RestClient 제공
Blocking I/O 기반의 Synchronous API 호출 지원,
-> 절차 지향처럼 각 코드라인이 끝나야 다음라인으로 넘어감
HTTP 요청과 응답을 처리하는 다양한 메서드 제공.
기본적인 HTTP 기능 외에도 JSON, XML, 바이너리 등 다양한 데이터 형식을 처리.
하지만, RestTemplate은 더이상 새로운 기능 개발에 중점X
WebClient가 권장됨.
비동기 및 리액티브 프로그래밍 지원하는 Rest Client.
Non-Blocking I/O 모델을 사용해 더 효율적인 리소스 관리와 높은 처리랑 제공.
WebClient는 Reactive Streams API 기반해 작동,
Java 8의 CompletableFuture나 Reactor의 Mono 및 Flux와 통합 가능.
기본적으로 JSON, XML, 바이너리 등 다양한 형식의 데이터를 처리할 수 있다.
@SpringBootTest와 @WebMvcTest의 차이점
Spring Boot 애플리케이션의 테스트를 작성할 때 사용되는 어노테이션.
전체 Spring 애플리케이션 컨텍스트를 로드하는 통합 테스트를 작성 시 사용.
이 어노테이션을 사용 시 애플리케이션의 모든 빈과 구성요소를 로드해 테스트에 사용.
실제 애플리케이션의 실행과 유사한 환경을 구축해 통합 테스트를 수행할 수 있게함.
일반적으로 DB연동, 외부 서비스 호출 등과 같이 실제 애플리케이션 환경에 대한 테스트 수행할 때 사용
Spring MVC 웹계층에 대한 테스트를 작성 시 사용.
이 어노테이션은 컨트롤러, 컨트롤러 advice, 필터 등과 같이 웹 계층에서 동작하는 부분만 로드해 테스트에 사용.
애플리케이션의 나머지 부분(서비스, 데이터 액세스 게층 등)을 모킹하고,
HTTP요청 및 응답을 테스트하기 위한 MockMvc객체를 제공.
-> 가볍고 빠른 단위 테스트 수행
주로 컨트롤러와 관련된 로직 테스트 시 사용