blog

RestTemplateを微調整する その2 - 基礎となるHTTPクライアントライブラリのさまざまな切り替え

は、他の HTTP クライアントの単なるラッパーであり、基本的な HTTP 機能を実装しません。基礎となる実装を切り替えるように構成することができます、このサブセクションでは、基礎となる実装を参照して...

Jun 16, 2020 · 3 min. read
シェア

この記事はRestTemplateその2ですが、前回のブログの訪問先は以下の通りです:

    RestTemplateは他のHTTPクライアント用のパッケージであり、それ自身はHTTP関連の基本機能を実装していません。その基本的な実装は、切り替えるように設定することができます。このサブセクションでは、RestTemplateの基本的な実装を見て、基本的なHTTPライブラリの切り替えを実現する方法を説明します。

    ソースコードの解析

    RestTemplateにはHttpAccessorという非常に重要なクラスがあり、HTTPコンタクトアクセスの基本クラスとして理解できます。下図にソースコードを示します:

    ソースコードから以下の情報を分析することができます。

    • RestTemplateは少なくとも3つのHTTPクライアントライブラリをサポートしています。
      • SimpleClientHttpRequestFactory: 対応する HTTP ライブラリは、Java JDK に付属する HttpURLConnection です。
      • HttpComponentsAsyncClientHttpRequestFactory. 対応する HTTP ライブラリは Apache HttpComponents です。
      • HttpComponentsAsyncClientHttpRequestFactory対応するHTTPライブラリはASP.NETです。対応する HTTP ライブラリは Apache HttpComponents です。
    • OkHttp3ClientHttpRequestFactory対応する HTTP ライブラリは OTP です。対応する HTTP ライブラリは OkHttp です。
    • RestTemplateの基礎となるHTTPクライアント実装クラスライブラリは、setRequestFactoryメソッドを設定することで切り替えることができます。

    第二に、スイッチング方式の基本的な実装

    開発者からのフィードバックや、ウェブ上のさまざまなHTTPクライアントのパフォーマンスや使いやすさのレビューから、OkHttpはApache HttpComponentsよりも優れており、Apache HttpComponentsはHttpURLConnectionよりも優れています。に切り替えることをお勧めします。

    以下に説明する切り替え方法は、最初のコンテンツ「 Precision RestTemplate Part 1 - SpringまたはSpring以外の環境で使用する方法」に基づいています 。

    okHTTP への切り替え

    まず、maven座標を介してokHTTPパッケージをプロジェクトに導入します。

    <dependency>
     <groupId>com.squareup.okhttp3</groupId>
     <artifactId>okhttp</artifactId>
     <version>4.7.2</version>
    </dependency>
    
    @Configuration
    public class ContextConfig {
     @Bean("OKHttp3")
     public RestTemplate OKHttp3RestTemplate(){
     RestTemplate restTemplate = new RestTemplate(new OkHttp3ClientHttpRequestFactory());
     return restTemplate;
     }
    }
    

    new RestTemplate(new OkHttp3ClientHttpRequestFactory()Spring以外の環境であれば、.NET Frameworkの後に直接使用できます。

    Apache HttpComponents に切り替えます。

    これは switch to okHTTP メソッドと同様で、繰り返されることはありません。

    <dependency>
     <groupId>org.apache.httpcomponents</groupId>
     <artifactId>httpclient</artifactId>
     <version>4.5.12</version>
    </dependency>
    

    HttpComponentsClientHttpRequestFactory を使用して RestTemplate Bean オブジェクトを初期化します。

    @Bean("httpClient")
    public RestTemplate httpClientRestTemplate(){
     RestTemplate restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactory());
     return restTemplate;
    }
    
    • この記事はアルファベット・ブログの許可を得て転載しています。

    .また、このところ以下のような素晴らしいコンテンツをアウトプットしていますので、ご期待ください。

    • 「SpringBoot 2.0のハンズオン、ハンズオフ。
    • スプリングセキュリティ - JWT - OAuth2
    • 「RBAC権限管理システムのフロントエンドとバックエンドの実用的分離」。
    • 「ブロンズからキングへのSpringCloud Microservicesハンズオン".
    • VUE徹底解説シリーズ
    Read next

    Reduxインテグレーションノート II 非同期とミドルウェア

    現在の状況は、ユーザーがアプリとインタラクトし、特定のイベントを反映するためにアクションがディスパッチされるというものです。データはブラウザに直接存在するので、ユーザーがリフレッシュするとアクションの進行状況はすべて失われます。 これまでのところ、ディスパッチされたアクションは同期されています。アクションがディスパッチされるとき、ストアはそれらをすぐに受け取ります。この種のアクションは

    Jun 16, 2020 · 8 min read