728x90
반응형
커스터마이징
RestTemplate와 WebClient의 HttpTemplate
RestTemplate
java.net.HttpURLConnection
사용
WebClient
Reactor Netty
의 HTTP 클라이언트 사용
로컬 커스터마이징
WebClient baseUrl
적용
// RestRunner.java @Component public class RestRunner implements ApplicationRunner { @Autowired WebClient.Builder builder; @Override public void run(ApplicationArguments args) throws Exception { WebClient webClient = builder.baseUrl("http://localhost:8080").build(); // baseUrl 적용 StopWatch stopWatch = new StopWatch(); stopWatch.start(); Mono<String> helloMono = webClient.get().uri("/hello").retrieve().bodyToMono(String.class); helloMono.subscribe(s -> { System.out.println(s); if(stopWatch.isRunning()) { stopWatch.stop(); } System.out.println(stopWatch.prettyPrint()); stopWatch.start(); }); Mono<String> worldMono = webClient.get().uri("/world").retrieve().bodyToMono(String.class); worldMono.subscribe(s -> { System.out.println(s); if(stopWatch.isRunning()) { stopWatch.stop(); } System.out.println(stopWatch.prettyPrint()); stopWatch.start(); }); } }
결과
baseUrl
설정 시 WebClient.Uri()
에 호출Url
만 입력할 수 있다.
글로벌 커스터마이징
1. WebClientCustomizer 이용 baseUrl 설정하기
// Application.java @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } // WebClientCustomizer Bean 등록 @Bean public WebClientCustomizer webClientCustomizer() { return new WebClientCustomizer(){ @Override public void customize(Builder webClientBuilder) { webClientBuilder.baseUrl("http://localhost:8080"); // baseUrl 설정 } }; } } // RestRunner.java @Component public class RestRunner implements ApplicationRunner { @Autowired WebClient.Builder builder; @Override public void run(ApplicationArguments args) throws Exception { WebClient webClient = builder.build(); // baseUrl 설정 제거 ... } }
결과
baseUrl
설정 시 WebClient.Uri()
에 호출Url
만 입력할 수 있다.
2. RestTemplateCustomizer 이용 Apach Http Client로 변경하기
(1) 의존성 추가
// pom.xml <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> </dependency>
(2) Application
클래스 수정
// Application.java @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Bean public RestTemplateCustomizer restTemplateCustomizer() { return new RestTemplateCustomizer(){ @Override public void customize(RestTemplate restTemplate) { // 각각 원하는 구현체에 맞는 Adaptor 형식의 RequestFactory가 있다. // Spring PSA(Portable Service Abstraction)가 잘 적용되어 있다. restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory()); } }; } }
결과
RestTemplate
는 Java
에 있는 기본 HttpConnection
대신 Apache
에서 제공하는 HttpClient
를 사용한다.
728x90
반응형
'Dev > Spring Boot' 카테고리의 다른 글
[스프링 부트 개념과 활용] 스프링 부트 Actuator 1부 (0) | 2020.09.03 |
---|---|
[스프링 부트 개념과 활용] 그 밖에 다양한 기술 연동 (0) | 2020.09.03 |
[스프링 부트 개념과 활용] 스프링 REST 클라이언트 1부 (0) | 2020.09.03 |
[스프링 부트 개념과 활용] 스프링 시큐리티 2부 (0) | 2020.08.31 |
[스프링 부트 개념과 활용] 스프링 시큐리티 1부 (0) | 2020.08.31 |
댓글