web-dev-qa-db-ja.com

WebClientとRestTemplate

春5に従って:

WebClientは、Web要求を実行するための主要なエントリポイントを表すインターフェイスです。

Spring Web Reactiveモジュールの一部として作成されており、これらのシナリオで従来のRestTemplateを置き換える予定です。新しいクライアントは、HTTP/1.1プロトコルを介して機能する事後対応​​型のノンブロッキングソリューションです

つまり、Spring 5にアップグレードする場合は、RestTemplateを使用して古いアプリケーションを再コーディングする必要がありますか?

または、Spring 5でRestTemplateを使用するための回避策はありますか?

27
KayV

いいえ、RestTemplateは引き続き存在します(少なくとも現時点では)。 WebClientで置き換える必要はありません。
主な違いの1つは、RestTemplateが同期およびブロッキングであることです。すなわち、あなたが残りのコールをするとき、あなたはさらに進むために応答が戻るまで待つ必要があります。

しかし、WebClientはこれとは正反対です。呼び出し側は、応答が戻るまで待つ必要はありません。代わりに、応答があったときに通知されます。

このような機能が必要な場合は、ResttemplateをWebClientに置き換える必要があります。
.block()を使用すると、webclientでの同期処理のようなRestテンプレートを実現できます。しかし、他の方法は不可能です。

33
pvpkiran

Java Doc によると、RestTemplateは非推奨になります。 Springチームは、可能であればWebClientを使用することをお勧めします。

注:5.0では、非ブロッキングのリアクティブorg.springframework.web.reactive.client.WebClientは、同期と非同期の両方、およびストリーミングシナリオを効率的にサポートするRestTemplateの最新の代替手段を提供します。 RestTemplateは将来のバージョンで非推奨となり、今後主要な新機能は追加されません。

30
Evgeni Dimitrov