#23 [SpringBoot/KotlinでBFF]RestTemplateのHttpClientをApacheに変更する

RestTemplateの内部で使われているHttpClientをJava標準のHttpClientからApacheのHttpClientに変更する。Java標準のHttpClientはPATCH が使用できない。あと経験則で大量APIアクセス時に動作が安定しなかったので基本的にApacheのHttpClientを使用するのが安心かと思っている(使用方法が悪かったり、現在は安定しているかもしれない)。

デフォルトのライブラリが何かprintlnでクラスを出力して確認

        val uri = "$taskApiUrl/tasks/$taskId"

        println(restTemplate?.requestFactory?.javaClass?.kotlin)

        return restTemplate?.getForObject(uri, Task::class)

結果は以下の通り、SimpleClientHttpRequestFactoryがデフォルトとなっている。このクラスのKDocを見てみるとJava標準ライブラリのjava.net.HttpURLConnectionが使われていることが分かる。

class org.springframework.http.client.SimpleClientHttpRequestFactory

Apache HttpClientに変更

application.ymlにapacheのHttpClientのdependencyを追加

    implementation(group = "org.apache.httpcomponents", name = "httpclient")

結果を確認

再度クラスを出力してみて、以下の通りHttpComponentsClientHttpRequestFactoryに変わっている事を確認。こちらもKDocを見てみるとApache HttpComponentsが使用されている事が分かる。

2020-12-24 08:39:55.056  INFO 5611 --- [nio-8080-exec-2] c.e.b.controller.TasksController         : getTask is called with taskId(12345).

http client : class org.springframework.http.client.HttpComponentsClientHttpRequestFactory

参考

Spring公式 15.1. RestTemplate Customization (ここだけだとちょっとよく分からない)

コード

https://github.com/little-engineer/bff-sample/pull/28/files

コメントを残す

メールアドレスが公開されることはありません。

ABOUT US
little
15年以上プログラマーをしているエンジニアです。Kotlin, Java, Python, C++を使用したServerSideの開発に携わってきました。とりあえずやってみるスタイルで記事を更新していきます。