1. 序章

このクイックチュートリアルでは、 SpringRestTemplatebeanを構成する方法を見ていきます。

まず、3つの主要な構成タイプについて説明します。

  • デフォルトのRestTemplateBuilderを使用
  • RestTemplateCustomizerを使用する
  • 独自のRestTemplateBuilderを作成する

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

2. デフォルトのRestTemplateBuilderを使用した構成

RestTemplate をこのように構成するには、SpringBootによって提供されるデフォルトのRestTemplateBuilderBeanをクラスに注入する必要があります。

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());
    }
}

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

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を構成クラスまたはSpringBootアプリケーションクラスの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. 結論

RestTemplateをデフォルトのRestTemplateBuilderで構成する方法、独自の RestTemplateBuilder、を作成する方法、または RestTemplateCustomizerbeanを使用する方法を見てきました。

いつものように、この例の完全なコードベースは、GitHubリポジトリにあります。