WebClient
- Reactor Netty 의 HTTP 사용
- 지역 설정 : 체인 메서드
- 전역 설정 : RestTemplateCustomizer 빈 생성
@Component
public class NoneBlockingRestRunner implements ApplicationRunner {
@Autowired
private WebClient.Builder builder;
@Override
public void run(ApplicationArguments args) throws Exception {
WebClient webClient = builder.baseUrl("http://localhost:8080").build();
StopWatch stopWatch = new StopWatch();
stopWatch.start();
// stream api
Mono<String> helloMono = webClient.get().uri("/hello").retrieve().bodyToMono(String.class);
// stream 동작
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( f -> {
System.out.println(f);
if(stopWatch.isRunning()) {
stopWatch.stop();
}
System.out.println(stopWatch.prettyPrint());
});
}
}
// 전역설정 시 모든 빌더는 해당 설정으로 만들어진다.
@Bean
public WebClientCustomizer webClientCustomizer(){
return new WebClientCustomizer() {
@Override
public void customize(WebClient.Builder webClientBuilder) {
webClientBuilder.baseUrl("http://localhost:8080");
}
};
// return builder -> { builder.baseUrl("http://localhost:8080");};
}
RestTemplate
- apache http 클라이언트를 사용해야할 경우가 자주 발생
- HttpClient 가 빈으로 등록되야함
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
@Bean
public RestTemplateCustomizer restTemplateCustomizer(){
return new RestTemplateCustomizer() {
@Override
public void customize(RestTemplate restTemplate) {
// 아파치 http 클라이언트 사용
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
}
};
}
'SpringBoot' 카테고리의 다른 글
JMX, Http (0) | 2020.11.08 |
---|---|
Spring Boot Acutator (0) | 2020.11.08 |
RestTemplate / WebClient (0) | 2020.11.08 |
MongoDB (0) | 2020.11.08 |
데이터베이스마이그레이션 (0) | 2020.11.08 |