티스토리 뷰

728x90

springboot

스프릥 부트 개념과 활용15(inflearn) - 백기선

Spring boot

스프링 REST 클라이언트

  • 스프링 부트가 REST 클라이언트 관련해서 직접적인 기능을 제공하는것은 아니다.
  • REST 클라이언트는 스프링 프레임워크에서 지원한다.
  • 스프링부트는 REST 클라이언트를 쉽게 사용할 수 있도록 빈을 등록해준다.
  • REST Client, WebClient 빈을 등록하는것이 아니고, 빌더를 등록해준다.

RestTemplate 와 WebClient

  • RestTemplate

    • Blocking I/O 기반의 Synchronous API
    • RestTemplateAutoConfiguration
    • 프로젝트에 spring-web 모듈이 있다면 RestTemplateBuilder를 빈으로 등록해준다.
    • reference 문서
  • WebClient

    • Non-Blocking I/O 기반의 Asynchronous API
    • WebClientAutoConfiguration
    • 프로젝트에 spring-webflux 모듈이 있다면 WebClient.Builder를 빈으로 등록해준다.
    • reference 문서
  • 비교 테스트

    • 사정 동일한 작업
      • RestController 생성 및 매핑 springboot
        • hello → 스레드 타임슬립 5초
        • world → 스레드 타임슬립 3초
    • RestTemplate
      • RestTemplate builder 주입받는다.(spring-boot-web 의존성 추가 시, 빈으로 등록된다.)
      • builder를 통해 build 한다.
      • 빌드된 RestTemplate를 통해 실행한다.
      • 결과 springboot
        1. 5초 뒤 hello 출력
        2. 3초 뒤 world 출력
        3. stopwatch가 꺼진다.
    • WebClient
      • Webflux를 의존성 추가한다.
      • builder를 통해 build 한다.
      • Mono를 세팅하고 subscribe() 한다.
      • 결과 springboot
        1. stopwatch 꺼진다.
        2. world 출력
        3. hello 출력
      • 비동기적인(Asyncronous한) 결과가 발생한다.
      • API들의 유연한 조합을 위해선 WebClient를 사용하는 것을 추천한다.
      • 좀 더 활용적인 예제를 보고 싶다면 .. 백선 youtube

커스터 마이징

  • RestTemplate

    • 기본으로 java.net.HttpURLConnection 사용.
    • 커스터마이징
      • 로컬 커스터마이징
        • 빌더 전에 baseUrl등 여러 설정이 가능하다.
      • 글로벌 커스터마이징
        • 전역적으로 사용하기 위해서..
        • RestTemplateCustomizer
        • 빌더 자체를 빈 재정의
    • aphache httpclient 사용하기
      • 의존성 주입
        <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> </dependency>
      • RestTemplate.setRequestFactory();
        springboot
  • WebClient

    • 기본으로 Reactor Netty의 HTTP 클라이언트 사용.
    • 커스터마이징
      • 로컬 커스터마이징
        • 빌더 전에 baseUrl등 여러 설정이 가능하다.
          springboot
      • 글로벌 커스터마이징
        • 전역적으로 사용하기 위해서..
        • WebClientCustomizer
          springboot
        • 빌더 자체를 빈 재정의


728x90

'Spring > Boot' 카테고리의 다른 글

Async  (0) 2020.10.27
스프링 부트 운영16 - Actuator  (0) 2020.10.27
스프링 부트 활용14 - 스프링 시큐리티  (0) 2020.10.27
스프링 부트 활용13 - 스프링 데이터  (0) 2020.10.27
스프링 부트 활용12 - 스프링 웹 MVC  (0) 2020.10.27
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday