[Spring Boot] 13. Spring REST Client

  • REST Client(RestTemplate, WebClient)는 스프링 프레임워크에서 제공
  • 스프링 부트는 직접적인 기능을 제공하지는 않고 빈을 등록
  • Rest Client의 빈이 아닌 빌더의 빈을 등록해줌

RestTemplate

  • Blocking I/O 기반의 Synchronous API,
  • RestTemplateAutoConfiguration 자동설정
  • 프로젝트에 spring-web 모듈이 있다면 RestTemplateBuilder를 빈으로 등록해준다
  • 추후 deprecated 될 예정
  • 기본으로 Http.net.HttpURLConnection을 사용
    Apache의 HttpClient를 사용하도록 커스터마이징 가능
  • 참고

WebClient

  • Non-Blocking I/O 기반의 Asynchronos API
  • 동기, 비동기 전부 지원,
  • WebClientAutoConfiguration
  • 프로젝트에 spring-webflux 모듈이 있다면 WebClient.Builder를 빈으로 등록
  • Reactor Netty의 HttpClient를 사용
커스터마이징
  • 커스터마이징 안해도 사용하는데 무방
  • 보통 메소드 안에서 builder.build()로 생성
  • 이러면 해당 메소드에서만 사용 가능
  • 해당 클래스의 생성자의 인자로 빌더를 넣어서 멤버로 가지게 한다면 클래스 레벨
  • 좀더 전역적으로 쓰고 싶다면 Customizer를 빈등록을 한다
  • RestTemplateCustomizer, WebClientCustomizer
  • 자동으로 생성된 빈이 Customizer를 거치게 되므로 빌더를 재정의하게 된다

Related POST

공유하기