リアクティブライブラリ
spring-webflux
は reactor-core
に依存しており、非同期ロジックを構成し、Reactive Streams サポートを提供するために内部的に使用します。通常、WebFlux API は Flux
または Mono
(内部で使用されるため) を返し、入力として Reactive Streams Publisher
実装を寛容に受け入れます。Publisher
が提供された場合、不明なセマンティクス (0..N) を持つストリームとしてのみ扱うことができます。ただし、セマンティクスがわかっている場合は、生の Publisher
を渡すのではなく、Flux
または Mono.from(Publisher)
でラップする必要があります。Flux
ではなく Mono
を使用することは重要です。なぜなら、カーディナリティを表現するのに役立つからです。たとえば、単一の非同期値が期待されるか複数の非同期値が期待されるかなどです。これは、決定を行うために不可欠になる場合があります (たとえば、HTTP メッセージをエンコードまたはデコードする場合)。
アノテーション付きコントローラーの場合、WebFlux は、アプリケーションによって選択されたリアクティブライブラリに透過的に適応します。これは、リアクティブライブラリおよびその他の非同期型のプラグ可能なサポートを提供する ReactiveAdapterRegistry
(Javadoc) の助けを借りて行われます。レジストリには、RxJava 3、Kotlin コルーチン、および SmallRye Mutiny のサポートが組み込まれていますが、他のレジストリを登録することもできます。