Spring

RestTemplateBuilder로 안전하게 restTemplate 생성하기

기록만이살길 2020. 6. 14. 21:58
반응형

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. 결론

기본 RestTemplateBuilderRestTemplate 을 구성 하거나 , 자체 RestTemplateBuilder를 빌드 하거나, RestTemplateCustomizer Bean을 사용하여 RestTemplate 을 구성하는 방법을 살펴 보았다 .

항상 그렇듯이이 예제의 전체 코드베이스는 GitHub 리포지토리 에서 찾을 수 있습니다 .

참고

https://www.baeldung.com/spring-rest-template-builder

반응형