[23/06/05] Day5 과제 제출

김보아·2023년 6월 5일
0

[오늘의 과제]

Spring 에서 사용하는 Rest Client에 대해서 설명해 주세요.

Spring에서는 다양한 Rest Client를 지원하며, 주요한 Rest Client 라이브러리로는 RestTemplate, WebClient, Feign 등이 있습니다.

RestTemplate RestTemplate은 Spring에서 기본적으로 제공하는 Rest Client입니다. 간단한 구성과 사용법으로 REST API 호출이 가능하며, HTTP 클라이언트와 API 요청/응답에 대한 처리를 수행합니다. RestTemplate은 다양한 HTTP 메서드(GET, POST, PUT, DELETE 등)와 URI, 요청 파라미터, 요청 본문 등을 지원하며, 별도의 설정 없이 JSON과 XML을 지원합니다.

WebClient WebClient는 Spring 5부터 도입된 Non-Blocking HTTP 클라이언트 라이브러리입니다. 비동기 방식으로 동작하며, Reactor 라이브러리의 Flux와 Mono 타입을 반환합니다. Non-Blocking 방식으로 동작하기 때문에 대용량 요청에 대한 처리 성능이 향상됩니다. WebClient는 기본적으로 JSON과 XML 형식을 지원하며, 기존 RestTemplate보다 가독성과 유지보수성이 좋습니다.

Feign Feign은 Spring에서 지원하는 Rest Client 라이브러리 중 하나로, 인터페이스 기반으로 REST API를 호출할 수 있습니다. 인터페이스에 선언된 메서드를 호출하는 것만으로 REST API를 호출할 수 있으며, 인터페이스에 필요한 URL, HTTP 메서드, 요청 본문 등을 지정할 수 있습니다. Feign은 Ribbon과 함께 사용하여 로드 밸런싱 기능을 지원하며, Hystrix와 함께 사용하여 장애 대응 기능도 지원합니다.

@SpringBootTest와 @WebMvcTest의 차이점을 설명해 주세요.

@SpringBootTest와 @WebMvcTest는 Spring Boot에서 테스트를 수행할 때 주로 사용되는 어노테이션입니다.

@SpringBootTest @SpringBootTest는 전체 애플리케이션 컨텍스트를 로드하여 테스트를 수행합니다. 즉, 실제 애플리케이션과 동일한 환경에서 테스트를 수행할 수 있습니다. 따라서, 모든 Bean을 로드하며, 모든 설정 파일이 로드됩니다. 이를 통해, 통합 테스트를 수행할 수 있습니다. 하지만, 테스트 속도가 느리다는 단점이 있습니다.

@WebMvcTest @WebMvcTest는 Spring MVC 구성 요소에 대한 테스트를 수행하는 데 사용됩니다. 즉, 웹 계층에 대한 테스트를 수행할 수 있습니다. 따라서, @Controller, @ControllerAdvice, @JsonComponent 등의 웹 컨트롤러 관련 빈들만 로드됩니다. 이를 통해, 단위 테스트를 수행할 수 있습니다. 하지만, 다른 구성 요소를 로드하려면 추가적인 설정이 필요합니다.

@SpringBootTest는 전체 애플리케이션 컨텍스트를 로드하여 실제 애플리케이션과 동일한 환경에서 모든 테스트를 수행할 수 있으며, 통합 테스트에 적합합니다.

반면, @WebMvcTest는 웹 계층에 대한 테스트를 수행할 수 있으며, 단위 테스트에 적합합니다.

[출처] Rest Client|작성자 우엉
[출처] @SpringBootTest와 @WebMvcTest|작성자 우엉

profile
개발하는 개발자

0개의 댓글