본문 바로가기
취업스터디

취업스터디 - 5일차 과제

by 새발의 피 2023. 7. 25.
  • Spring 에서 사용하는 Rest Client에 대해서 설명해 주세요.
  • @SpringBootTest와 @WebMvcTest의 차이점을 설명해 주세요.

 

 

 

  •  

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

Spring에서는 RestTemplate이라는 Rest Client를 제공하여 RESTful 웹 서비스와 통신할 때 사용합니다. RestTemplate은 HTTP 프로토콜을 통해 RESTful 웹 서비스에 HTTP 요청을 보내고 응답을 받아오는 기능을 제공합니다.

RestTemplate은 다양한 HTTP 메서드(GET, POST, PUT, DELETE 등)를 지원하며, JSON이나 XML과 같은 데이터 형식을 처리할 수 있습니다. 또한, 응답을 객체로 자동으로 매핑하는 기능도 제공하여, 간단한 코드로 RESTful API를 호출하고 데이터를 처리할 수 있습니다.

RestTemplate의 주요 기능과 사용법은 다음과 같습니다:

  1. HTTP 요청 메서드:
    • RestTemplate은 다양한 HTTP 메서드를 지원하며, 원하는 메서드를 사용하여 RESTful API를 호출할 수 있습니다.
  2. 요청과 응답 데이터 처리:
    • RestTemplate은 요청과 응답 데이터를 JSON, XML과 같은 형식으로 처리할 수 있습니다.
    • Spring에서는 Jackson, Gson과 같은 라이브러리를 사용하여 자동으로 객체로 매핑하거나, 문자열로 처리할 수 있습니다.
  3. 헤더 추가:
    • 필요한 경우 RestTemplate을 사용하여 HTTP 요청에 헤더를 추가할 수 있습니다.
  4. 응답 처리:
    • 응답 데이터를 받아서 필요한 로직을 처리할 수 있습니다. 예를 들어, JSON 데이터를 객체로 매핑하거나, 문자열로 변환하여 처리할 수 있습니다.

RestTemplate은 Spring 프레임워크의 일부로 자동으로 빈으로 등록되기 때문에, 스프링 애플리케이션에서 쉽게 사용할 수 있습니다. RestTemplate을 사용하여 외부 API와 통신하거나 마이크로서비스 간의 통신에도 유용하게 활용됩니다. 다만, 스프링 5 버전부터는 WebClient가 새로 추가되어 RestTemplate 대신 WebClient를 사용하는 것이 권장되고 있습니다. WebClient는 논블로킹(Non-blocking) 방식의 웹 클라이언트로, 더욱 효율적이고 성능이 좋은 비동기 방식의 통신을 지원합니다. 따라서 새로운 프로젝트에서는 WebClient를 사용하는 것을 고려하는 것이 좋습니다.

 

 

 

 

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

@SpringBootTest와 @WebMvcTest는 스프링 부트 테스트에서 사용되는 어노테이션으로, 테스트를 수행하는 데에 각각 다른 목적과 범위를 가지고 있습니다.

  1. @SpringBootTest:
    • @SpringBootTest는 스프링 부트 애플리케이션 전체를 로드하여 테스트하는데 사용됩니다.
    • 이 어노테이션을 사용하면 모든 Bean을 등록하고 설정 파일을 읽어들여 애플리케이션 컨텍스트를 구성합니다.
    • 즉, 애플리케이션의 전체 구성을 테스트하고, 실제로 동작하는 서비스와 유사한 테스트를 수행할 수 있습니다.
    • 따라서 통합 테스트(Integration Test)를 수행하기에 적합합니다.
@SpringBootTest
class MyApplicationTests {
    // ...
}

2. @WebMvcTest:

  • @WebMvcTest는 스프링 웹 계층을 테스트하는데 사용됩니다.
  • 이 어노테이션은 컨트롤러(Controller)를 포함한 웹 관련 빈만 로드하여 테스트하는 것으로, 웹 계층에 대한 테스트를 빠르게 수행할 수 있습니다.
  • 일반적으로 서비스 레이어(Service Layer)와 데이터 접근 레이어(Data Access Layer)는 MockBean으로 대체하여 단위 테스트(Unit Test)가 가능하도록 합니다.
  • 따라서 컨트롤러와 관련된 빠른 테스트를 수행할 때 적합합니다.
@WebMvcTest(MyController.class)
class MyControllerTests {
    // ...
}

요약하면, @SpringBootTest는 애플리케이션의 전체 구성을 로드하여 통합 테스트를 수행하는 반면, @WebMvcTest는 웹 관련 빈만 로드하여 웹 계층에 대한 빠른 테스트를 수행합니다. 테스트의 목적과 범위에 따라 적절한 어노테이션을 선택하여 사용하는 것이 중요합니다.

'취업스터디' 카테고리의 다른 글

취업스터디 - 7일차 과제  (0) 2023.07.27
취업스터디 - 6일차 과제  (0) 2023.07.26
취업스터디 - 4일차 과제  (0) 2023.07.24
취업스터디 - 1주차 과제  (0) 2023.07.23
취업스터디 - 3일차 과제  (0) 2023.07.23

댓글