RestTemplateBuilderでRestTemplateを設定する

1前書き

このクイックチュートリアルでは、Spring __RestTemplate __beanの設定方法について見ていきます。

3つの主な設定タイプについて説明することから始めましょう。

  • デフォルトの RestTemplateBuilder を使用

  • RestTemplateCustomizer を使用する

  • 独自の RestTemplateBuilder を作成する

これを簡単にテストできるようにするには、 簡単なSpring Bootアプリケーションの設定方法 のガイドに従ってください。

2デフォルトの RestTemplateBuilder を使用した設定

このように RestTemplate を設定するには、Spring Bootが提供するデフォルトの RestTemplateBuilder Beanを** クラスにインジェクトする必要があります。

private RestTemplate restTemplate;

@Autowired
public HelloController(RestTemplateBuilder builder) {
    this.restTemplate = builder.build();
}

このメソッドで作成された __RestTemplate __beanのスコープは、それを構築したクラスに限定されます。

3 RestTemplateCustomizer を使用した設定

このアプローチで、私たちはアプリケーション全体の追加的なカスタマイズを作成することができます。

これはもう少し複雑な方法です。このためには、__RestTemplateCustomizerを実装するクラスを作成し、それをBeanとして定義する必要があります。

public class CustomRestTemplateCustomizer implements RestTemplateCustomizer {
    @Override
    public void customize(RestTemplate restTemplate) {
        restTemplate.getInterceptors().add(new CustomClientHttpRequestInterceptor());
    }
}

__CustomClientHttpRequestInterceptor __interceptorはリクエストの基本的なロギングを行います。

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 を作成して構成する

これは 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を使用する方法を見てきました。

いつものように、この例の完全なコードベースはhttps://github.com/eugenp/tutorials/tree/master/spring-resttemplate[GitHub repository]にあります。