5.2. リアクティブ Spring Web
spring-web
モジュールは、Spring WebFlux のリアクティブ機能の基盤要素を提供します。以下が含まれます。
-
HttpHandler
API によって提供される HTTP 抽象化 - サポートされるサーバーのリアクティブストリームアダプター (Eclipse Vert.x、Undertow など)
イベントストリームデータをエンコードおよびデコードするためのコードデックです。これには、以下が含まれます。
-
DataBuffer
、さまざまなタイプのバイトバッファー表現 NettyByteBuf
、java.nio.ByteBuffer
など) の抽象化 - HTTP とは関係なくコンテンツをエンコードおよびデコードする低レベルの契約
-
HTTP メッセージコンテンツのエンコードおよびデコードを行う
HttpMessageReader
およびHTTPMessageWriter
コントラクト
-
-
WebHandler
API (非ブロッキング契約を使用する Servlet 3.1 I/O API に対応)
Web アプリケーションを設計する場合は、Spring WebFlux が以下を提供する 2 つのプログラミングモデルのいずれかを選択できます。
- アノテーション付きコントローラー
-
Spring WebFlux のアノテーションが付けられたコントローラーは Spring MVC と一致しており、
spring-web
モジュールと同じアノテーションに基づいています。SpringMVC のspring-web
モジュールに加えて、WebFlux の対応する@RequestBody
引数もサポートしています。 - 機能エンドポイント
- Java 8 Lambda 式および機能 API の Spring WebFlux が提供する機能エンドポイント。このプログラミングモデルは、要求をルーティングおよび処理する専用のライブラリー (この場合は Reactor など) に依存します。インテントの宣言とコールバックの使用に依存してアクティビティーを完了するアノテーションベースのエンドポイントコントローラーとは対照的に、機能エンドポイントに基づくリアクティブモデルでは、要求の処理をアプリケーションで完全に制御できます。