Springフレームspring-webモジュールにおけるRestit Template類の詳細


Restit Template類は、spring-webモジュールでHTTPアクセスを行うRESTクライアントコアクラスです。Restit Template要求は、ブロックIOを使用して、低合併のアプリケーションシーンに適しています。
1.RertTemplate類は3つのコンストラクションを提供しています。
  • Rest Template()
  • RestTemplate
  • org.spring frame ework.http.client.HttpRequest Factoryインターフェースの実現クラスは、下の階層で実現される第三者HTTPクライアントソフトウェアを提供します。
  • Rest Template(java.util.List)message Coverters)
  • org.springframe ework.http.com nverter.Http Message Coverterインターフェースの実現対象は、HTTPメッセージとJava POJOの間でデータ変換が可能です。 
    2. Restit Template類は、GET、POST、PUT、DELETE、HEAD、OPTNSなどの多くのHTTPの方法で、サーバにHTTP要求を開始することができます。
    2.1 GET要求の方法
  • get ForObject(String,ResonseClass,Object[])
  • get ForObject(String,ResonseClass,Map)
  • get ForObject(URI、ResonseClass);
  • 2.2 PUT要求の方法:
  • put(String,Request Class,Object[])
  • put(String,Request Class,Map)
  • put(URI、Request Class);
  • 2.3 POST要求の方法:
  • postForObject(String,Request Class,ResonseClass,Object[])
  • postForObject(String,Request Class,ResonseClass,Map)
  • postForObject(URI、Request Class、ReonponseClass);
  • 3.最新のSpring Framewark 5.0.7.RELEASEでは、spring-webモジュールの下に採用された第三者HTTPクライアントソフトウェアが3.1 Javaを実現します。 HttpURLConnect(デフォルトのRestit TemplateはHTTP 2に対応していません。)
    SimpleClient HttpRequest Factory
    3.2 Net ty 4.1.25.Final
    Netty 4 Client HttpRequest Factoryはもう古いです。ReactoClient HttpConnectorに取って代わられます。
    3.3 OkHttp 3.10.0
    OkHttp 3 Client HttpRequest Factory
    3.4 Appche Http Components(HTTP 2は対応していません)
  • HttpClient 4.5.5
  • Http Components Client HttpRequest Factory
  • HttpAsyncCient 4.1.3
  • Http Components Aync Client HttpRequest Factoryはもう古いです。
    4.例
    4.1デフォルトのクライアントを使用してRestTemplateオブジェクトを構築する
    RestTemplate restTemplate = new RestTemplate();
    に等しい
    RestTemplate restTemplate = new RestTemplate(new SimpleClientHttpRequestFactory());
    に等しい
    RestTemplate restTemplate = new RestTemplate();
    restTemplate.setRequestFactory(new SimpleClientHttpRequestFactory());
    4.2 OkHttp 3を使ってRestTemplateオブジェクトを構築する
    RestTemplate restTemplate = new RestTemplate(new OkHttp3ClientHttpRequestFactory());
    4.3 RestTemplateBuiderを使ってパラメータ化されたRestTemplateオブジェクトを構築します。
    RestTemplateBuilder restTemplateBuilder = new RestTemplateBuilder();
    restTemplateBuilder.build();
    4.4 OkHttp 3 Clientを使ってHTTPS要求を送ります。
    SSLContext sslContext = SSLContext.getInstance("TLS");
    sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
    SSLSocketFactory ssf = sslContext.getSocketFactory();
    
    OkHttpClient httpClient = new OkHttpClient.Builder()
    	.sslSocketFactory(ssf, (X509TrustManager) trustAllCerts[0])
    	.hostnameVerifier(verifieredAllHost)
    	.build();
    
    OkHttp3ClientHttpRequestFactory requestFactory = 
         new OkHttp3ClientHttpRequestFactory(httpClient);
    RestTemplate template = new RestTemplate(requestFactory);
    5.Rets Templateに代わる応答式クライアントWebClient
    spring-webfluxモジュールでは、応答式RESTは、RestTemplateの代わりにクライアントWebClientを要求する。
    org.springframe ewark.web.reactive.function.client.WebClientインターフェイスは非閉塞式IOを使用して、非同期呼出をサポートして、高合併、流式処理シーンに適しています。
    このspring-webfluexモジュールでは、WebClientデフォルトの実装org.springframe ebork.web.reactive.function.client.Default WebClintクラスを提供しています。後で詳しく紹介します。        
    参照リンク:
    https://github.com/spring-projects/spring-framework/blob/v5.0.7.RELEASE/spring-web/src/main/java/org/springframework/web/client/RestTemplate.java
    https://docs.spring.io/spring/docs/5.0.x/javadoc-api/org/springframework/web/client/RestTemplate.html