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]にあります。