RestTemplateBuilderを使用してRestTemplateを構成する
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リポジトリにあります。