RestTemplateは、REST API(Web API)を呼び出すためのメソッドを提供するクラスであり、 Spring Frameworkが提供するHTTPクライアントである。
JavaConfigでのBean定義
@Configuration
public class AppConfig {
@Bean
RestTemplate restTemplate() {
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
// サーバーとの接続タイムアウト時間(ミリ秒)を設定する
// タイムアウト発生時は「org.springframework.web.client.ResourceAccessException」が発生すする
requestFactory.setConnectTimeout(5000);
// レスポンスデータの読み込みタイムアウト時間(ミリ秒)を設定する
// タイムアウト発生時は「org.springframework.web.client.ResourceAccessException」が発生する
requestFactory.setReadTimeout(3000);
return new RestTemplate(requestFactory);
}
}
bean定義ファイル(applicationContext.xml)の定義例
<bean id="clientHttpRequestFactory"
class="org.springframework.http.client.SimpleClientHttpRequestFactory"><!-- (1) -->
<property name="connectTimeout" value="${api.connectTimeout: 2000}" /><!-- (2) -->
<property name="readTimeout" value="${api.readTimeout: 2000}" /><!-- (3) -->
</bean>
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<constructor-arg ref="clientHttpRequestFactory" /><!-- (4) -->
</bean>
(1)ClientHttpRequestFactoryのbean定義を行う。
(2)connectTimeoutプロパティにサーバとの接続タイムアウト時間(ミリ秒)を設定する。
タイムアウト発生時はorg.springframework.web.client.ResourceAccessExceptionが発生する。
(3)readTimeoutプロパティにレスポンスデータの読み込みタイムアウト時間(ミリ秒)を設定する。
タイムアウト発生時はResourceAccessExceptionが発生する。
(4)ClientHttpRequestFactoryを引数に指定するコンストラクタを使用してbeanを登録する。