RestTemplateBuilder로 안전하게 restTemplate 생성하기
1. 소개
이 빠른 튜토리얼에서는 Spring RestTemplate Bean 을 구성하는 방법을 살펴 보겠습니다 .
세 가지 주요 구성 유형에 대해 시작하겠습니다.
- Default RestTemplateBuilder 사용
- RestTemplateCustomizer 사용
- RestTemplateBuilder를 Custom 속성 설정
2. Default RestTemplateBuilder 사용
이런 식으로 RestTemplate 을 구성하려면 Spring Boot에서 제공 하는 기본 RestTemplateBuilder bean을 클래스 에 주입 해야합니다 .
private RestTemplate restTemplate;
@Autowired
public HelloController(RestTemplateBuilder builder) {
this.restTemplate = builder.build();
}
RestTemplate의 이 방법으로 만든 콩은 그했다 우리가 그것을 구축하는 클래스에 범위를 제한 .
3. RestTemplateCustomizer 사용
이 접근 방식을 통해 애플리케이션 전체의 추가 사용자 정의를 작성할 수 있습니다.
이것은 조금 더 복잡한 접근법입니다. 이를 위해 RestTemplateCustomizer 를 구현하는 클래스 를 작성하고 이를 Bean으로 정의해야합니다.
public class CustomRestTemplateCustomizer implements RestTemplateCustomizer {
@Override
public void customize(RestTemplate restTemplate) {
restTemplate.getInterceptors().add(new CustomClientHttpRequestInterceptor());
}
}
CustomClientHttpRequestInterceptor의 인터셉터는 요청의 기본 로깅을하고있다 :
public class CustomClientHttpRequestInterceptor implements ClientHttpRequestInterceptor {
private static Logger LOGGER = LoggerFactory
.getLogger(CustomClientHttpRequestInterceptor.class);
@Override
public ClientHttpResponse intercept(
HttpRequest request, byte[] body,
ClientHttpRequestExecution execution) throws IOException {
logRequestDetails(request);
return execution.execute(request, body);
}
private void logRequestDetails(HttpRequest request) {
LOGGER.info("Headers: {}", request.getHeaders());
LOGGER.info("Request Method: {}", request.getMethod());
LOGGER.info("Request URI: {}", request.getURI());
}
}
이제 CustomRestTemplateCustomizer 를 구성 클래스 또는 Spring Boot 애플리케이션 클래스의 Bean으로 정의합니다 .
@Bean
public CustomRestTemplateCustomizer customRestTemplateCustomizer() {
return new CustomRestTemplateCustomizer();
}
이 구성을 사용하면 응용 프로그램에서 사용할 모든 RestTemplate 에 사용자 정의 인터셉터가 설정됩니다.
4. RestTemplateBuilder를 Custom 속성 설정
이것이 RestTemplate 을 사용자 정의하는 가장 극단적 인 방법 입니다. 그것은 기본 자동 구성하지 않습니다 RestTemplateBuilder을 , 우리는 그것을 자신을 정의 할 필요가 있도록 :
@Bean
@DependsOn(value = {"customRestTemplateCustomizer"})
public RestTemplateBuilder restTemplateBuilder() {
return new RestTemplateBuilder(customRestTemplateCustomizer());
}
그런 다음 기본 RestTemplateBuilder 와 마찬가지로 사용자 정의 빌더 를 클래스에 삽입하고 평소와 같이 RestTemplate 을 작성할 수 있습니다 .
private RestTemplate restTemplate;
@Autowired
public HelloController(RestTemplateBuilder builder) {
this.restTemplate = builder.build();
}
5. 결론
기본 RestTemplateBuilder 로 RestTemplate 을 구성 하거나 , 자체 RestTemplateBuilder를 빌드 하거나, RestTemplateCustomizer Bean을 사용하여 RestTemplate 을 구성하는 방법을 살펴 보았다 .
항상 그렇듯이이 예제의 전체 코드베이스는 GitHub 리포지토리 에서 찾을 수 있습니다 .
참고
'Spring' 카테고리의 다른 글
RestTemplate Interceptor활용하기 (0) | 2020.06.15 |
---|---|
ErrorHandling 을 통한 RestTemplate 공통 에러처리 (1) | 2020.06.14 |
RestTemplate에서 List 다루기 (0) | 2020.06.14 |
RestTemaplte 사용방법 (0) | 2020.06.13 |
이중화된 시스템 Redis를 통한 Spring security session관리 (0) | 2020.06.13 |