1つのプロジェクトで2つのアプローチ(反応性と標準)を使用したいと思います。
1つREST APIエンドポイントをリアクティブwebfluxに移行して、残りを移行する前にパフォーマンスをテストしようとしましたが、機能しませんでした。ルーターとハンドラーを追加しましたが、機能しなくなりました削除する spring-boot-starter-web
依存関係から、無効にする@RestController
httpを取得しました404
常にコーディングします。それは可能ですか?または、すべてのプロジェクトを事後対応型アプローチに移行する必要がありますか?
Spring Bootのリファレンスドキュメントで説明されているように、 MVCとWebFluxの両方が利用可能な場合、Spring BootはSpring MVCアプリケーションを自動構成します 。これにはいくつかの理由があります。
あなたが達成しようとしている目標に応じて、これに取り組むいくつかの方法があるかもしれません。
WebClient
を使用して複数の同時リモートHTTP呼び出しを最適化し、Reactor演算子を使用したい場合は、Spring MVCアノテーション付きコントローラーを引き続き使用し、戻り値として反応型を返すことができます( これについての詳細この春のブートトークで )。
純粋なスケーラビリティとレイテンシ(必ずしも生のスループットとは限らない)で作業したい場合は、spring-boot-starter-webflux
の使用を開始して、そこから作業できます。ブロッキングAPIの使用(ブロッキングデータベース呼び出しのような)は禁止されており、それらをFlux
またはMono
でラップし、個別のスレッドプールで動作するようにスケジューリングすると、パフォーマンスの面で効果がありません。
最後に、Spring WebFluxが提供する機能的アプローチを使用したい場合、必ずしもパフォーマンスが向上するとは限りません。それは本当にあなたのユースケースとそれをどのように実装するかに依存します。