본문 바로가기

Java/Spring Boot

[Spring Boot] REST Client 커스터마이징

1. WebClient

: 기본으로 Reactor Netty의 HTTP 클라이언트 사용

 

 

① 로컬 커스터마이징

WebClient webClient = builder.baseUrl("http://localhost:8080").build();

Mono<String> helloMono = webClient.get().uri("/hello")
			.retrieve().bodyToMono(String.class);

 

 

② 글로벌 커스터마이징

 

 

- WebClientCustomizer

//@Bean
//public WebClientCustomizer webClientCustomizer() {
//   return new WebClientCustomizer() {
//      @Override
//      public void customize(WebClient.Builder webClientBuilder) {
//         webClientBuilder.baseUrl("http://localhost:8080");
//      }
//   };
//}

// or

@Bean
public WebClientCustomizer webClientCustomizer() {
   return webClientBuilder -> webClientBuilder.baseUrl("http://localhost:8080");
}

-> 모든 builder는 기본적으로 baseUrl이 세팅된 상태로 다른 빈들에 주입되기 때문에 builder.build()만 해서 사용

 

 

- 빈 재정의

: WebClientCustomizer가 아니라 WebClient Builder 자체를 다시 등록해도 됨

 

 

 

 

 

 

 

2. RestTemplate

: 기본으로 java.net.HttpURLConnection 사용

 

# Apache HttpClient로 변경하고 싶은 경우

org.apache.httpcomponents:httpclient 의존성 추가 후, 아래와 같이 RestTemplateCustomizer 정의

@Bean
public RestTemplateCustomizer restTemplateCustomizer() {
   return new RestTemplateCustomizer() {
      @Override
      public void customize(RestTemplate restTemplate) {
         restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
      }
   };
}

 

① 로컬 커스터마이징

 

② 글로벌 커스터마이징

  • RestTemplateCustomizer
  • 빈 재정의

 

 

 

 

 

 

 

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard

 

스프링 부트 개념과 활용 - 인프런 | 강의

스프링 부트의 원리 및 여러 기능을 코딩을 통해 쉽게 이해하고 보다 적극적으로 사용할 수 있는 방법을 학습합니다., - 강의 소개 | 인프런...

www.inflearn.com