5.2. リアクティブ Spring Web

spring-web モジュールは、Spring WebFlux のリアクティブ機能の基盤要素を提供します。以下が含まれます。

  • HttpHandler API によって提供される HTTP 抽象化
  • サポートされるサーバーのリアクティブストリームアダプター (Eclipse Vert.x、Undertow など)
  • イベントストリームデータをエンコードおよびデコードするためのコードデックです。これには、以下が含まれます。

    • DataBuffer、さまざまなタイプのバイトバッファー表現 Netty ByteBufjava.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 など) に依存します。インテントの宣言とコールバックの使用に依存してアクティビティーを完了するアノテーションベースのエンドポイントコントローラーとは対照的に、機能エンドポイントに基づくリアクティブモデルでは、要求の処理をアプリケーションで完全に制御できます。