これらはすべてWebFlux構成で宣言されています。0ServerResponseResultHandlerServerResponse、通常は機能エンドポイントから。クラスからの戻り値を処理します。モデル属性として扱われます。ビューリゾルバーも参照してください。ハンドラー固有のメカニズムに基づいてエラー処理用の関数を公開できます。このエラー関数は次の場合に呼び出されます:ハンドラー(たとえば、@Controller)呼び出しは失敗します。介したハンドラー戻り値の処理は失敗します。エラー関数は、ハンドラーから返されるリアクティブ型がデータ項目を生成する前にエラー信号が発生する限り、応答を(たとえば、エラー状況に)変更できます。メソッドがサポートされます。HandlerExceptionResolverに基づいています。通常、これは重要ではありません。使用して、ハンドラーが選択される前に発生する例外を処理できないことに注意してください。APIセクションの例外も参照してください。MVCビューの解像度により、特定のビューテクノロジに縛られることなく、HTMLテンプレートとモデルを使用してブラウザにレンダリングできます。インスタンスにマップする専用HandlerResultHandlerを介して、ビューの解像度がサポートされています。使用して応答をレンダリングします。ハンドラーからの戻り値と、要求処理中に追加された属性を含むモデルが含まれます。戻り値は次のいずれかとして処理されます。解決される論理ビュー名。要求パスに基づいて、先頭と末尾のスラッシュを除いたデフォルトのビュー名を選択し、Viewに解決します。完了した場合)でも同じことが起こります。解決シナリオのAPI。コード補完を使用してIDEのオプションを調べましょう。リクエストのモデルに追加される追加のモデル属性。present.モデルには、非同期のリアクティブタイプを含めることができます(たとえば、ReactorまたはRxJavaから)。そのようなモデル属性を具体的な値に解決し、モデルを更新します。List<T>に解決されます。BeanをSpring構成に追加するだけです。WebFlux構成は、ビューの解像度専用の構成APIを提供します。WebFluxと統合されたビューテクノロジーの詳細については、ビューテクノロジーを参照してください。プレフィックスを使用すると、リダイレクトを実行できます。(およびサブクラス)は、これをリダイレクトが必要な命令として認識します。名の残りはリダイレクトURLです。Rendering.redirectTo("abc").build()を返した場合と同じですが、コントローラー自体が論理ビュー名の観点から動作できるようになりました。ビュー名は絶対URLにリダイレクトされます。コンテンツネゴシエーションをサポートしています。Viewでサポートされているメディアタイプを比較します。HttpMessageWriterViewを提供します。通常、これらはWebFluxの設定を介してデフォルトビューとして設定します。要求されたメディアタイプに一致する場合、デフォルトビューが常に選択され、使用されます。WebFluxは、アノテーションベースのプログラミングモデルを提供します。コンポーネントは、アノテーションを使用して、リクエストマッピング、リクエスト入力、例外処理などを表現します。アノテーション付きコントローラーには柔軟なメソッドシグネチャーがあり、基本クラスを継承したり、特定のインターフェースを実装したりする必要はありません。次のリストは、基本的な例を示しています。Bean定義を使用して、コントローラーBeanを定義できます。クラスを検出し、それらのBean定義を自動登録するためのSpring一般サポートと連携しています。アノテーション付きクラスのステレオタイプとしても機能し、Webコンポーネントとしてのロールを示します。Beanの自動検出を有効にするには、次の例に示すように、Java構成にコンポーネントスキャンを追加できます。パッケージをスキャンします。パッケージをスキャンします。アノテーションを継承するコントローラーを示します。HTMLテンプレートを使用して、ビューの解像度とレンダリングに対して応答本文に直接書き込みます。アノテーションは、リクエストをコントローラーメソッドにマップするために使用されます。URL、HTTPメソッド、要求パラメーター、ヘッダー、およびメディアタイプで一致するさまざまな属性があります。クラスレベルで使用して共有マッピングを表現したり、メソッドレベルで使用して特定のエンドポイントマッピングに絞り込んだりできます。@RequestMappingのHTTPメソッド固有のショートカットバリアントもあります。@RequestMappingを使用するのではなく、特定のHTTPメソッドにマップされる必要があるため、上記のアノテーションはカスタムアノテーションです。次の例では、タイプおよびメソッドレベルのマッピングを使用しています。0個以上のパスセグメントと一致する次の例に示すように、URI変数を宣言し、@PathVariableを使用してそれらの値にアクセスすることもできます。...}次の例に示すように、クラスおよびメソッドレベルでURI変数を宣言できます。クラスレベルのURIマッピング。メソッドレベルのURIマッピング。クラスレベルのURIマッピング。メソッドレベルのURIマッピング。Dateなど)はデフォルトでサポートされており、他のデータ型のサポートを登録できます。コンパイラフラグを使用してコードをコンパイルする場合は、その詳細を省略できます。ゼロ個以上の残りのパスセグメントと一致するURI変数を宣言します。変数は完全な相対パスをキャプチャーします。{varName:regex}。プレースホルダーを埋め込むこともできます。これを使用して、たとえば、外部設定に基づいてベースURLをパラメーター化できます。URLパスで使用するために特別に設計されています。MVC複数のパターンがURLに一致する場合、比較して最適な一致を見つける必要があります。PathPattern.SPECIFICITY_COMPARATORで行われます。すべてのパターンについて、URI変数とワイルドカードの数に基づいてスコアが計算されます。URI変数のスコアはワイルドカードよりも低くなります。合計スコアの低いパターンが優先されます。2つのパターンのスコアが同じ場合、長い方が選択されます。{*varName}など)はスコアリングから除外され、代わりに常に最後にソートされます。2つのパターンが両方とも包括的である場合、長い方が選択されます。基づいてリクエストマッピングを絞り込むことができます。属性は、クラスレベルの宣言を継承するのではなくオーバーライドします。要求ヘッダーとコントローラーメソッドが生成するコンテンツタイプのリストに基づいて、要求マッピングを絞り込むことができます。...}メディアタイプは文字セットを指定できます。否定表現がサポートされています。text/plain以外のコンテンツタイプを意味します。属性は、クラスレベルの宣言を継承するのではなくオーバーライドします。MVCクエリパラメータの条件に基づいてリクエストマッピングを絞り込むことができます。クエリパラメータの存在(myParam)、その不在(!myParam)、または特定の値(myParam=myValue)をテストできます。次の例では、値を持つパラメーターをテストします。myValueと等しいことを確認してください。myValueと等しいことを確認してください。次の例に示すように、リクエストヘッダー条件でも同じように使用できます。myValueと等しいことを確認してください。myValueと等しいことを確認してください。HEADを透過的にサポートします。コントローラーのメソッドを変更する必要はありません。ヘッダーが実際に応答に書き込まずに書き込まれたバイト数に設定されるようにします。メソッドにリストされているHTTPメソッドのリストに設定することによって処理されます。GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONSに設定されます。@PostMappingなどを使用して)。OPTIONSにマップできますが、これは一般的なケースでは必要ありません。WebFluxは、要求のマッピングに合成アノテーションの使用をサポートしています。属性のサブセット(またはすべて)を再宣言するように構成されたアノテーションです。構成されたアノテーションの例です。@RequestMappingを使用するのではなく、特定のHTTPメソッドにマッピングされる必要があるためです。合成されたアノテーションの例が必要な場合は、それらがどのように宣言されているかを参照してください。WebFluxは、カスタムリクエストマッチングロジックを持つカスタムリクエストマッピング属性もサポートしています。メソッドのオーバーライドを必要とする、より高度なオプションです。RequestConditionを返すことができます。MVCハンドラーメソッドをプログラムで登録できます。これは、動的な登録や、異なるURLでの同じハンドラーの異なるインスタンスなどの高度なケースに使用できます。次の例は、その方法を示しています。ターゲットハンドラーとコントローラーのハンドラーマッピングを挿入します。要求マッピングメタデータを準備します。ハンドラーメソッドを取得します。ターゲットハンドラーとコントローラーのハンドラーマッピングを挿入します。要求マッピングメタデータを準備します。ハンドラーメソッドを取得します。ハンドラーメソッドには柔軟なシグネチャーがあり、サポートされているコントローラーメソッドの引数と戻り値の範囲から選択できます。MVC次の表に、サポートされているコントローラーメソッドの引数を示します。)は、ブロッキングI/O(要求本体の読み取りなど)を解決する必要がある引数でサポートされています。これは説明列にマークされています。ブロッキングを必要としない引数では、リアクティブ型は想定されていません。@RequestHeaderなど)を持つアノテーションと組み合わせてメソッド引数としてサポートされ、required=falseと同等です。ServerHttpResponseHTTPリクエストまたは応答へのアクセス。WebSessionセッションへのアクセス。これは、属性が追加されない限り、新しいセッションの開始を強制しません。リアクティブ型をサポートします。types.org.springframework.http.HttpMethodリクエストのHTTPメソッド。java.time.ZoneIdLocaleContextResolverによって決定される、現在のリクエストに関連付けられたタイムゾーン。@PathVariableURIテンプレート変数へのアクセス用。URIパターンを参照してください。@MatrixVariableURIパスセグメントの名前と値のペアへのアクセス用。行列変数を参照してください。@RequestParamサーブレット要求パラメーターへのアクセス用。パラメータ値は、宣言されたメソッド引数タイプに変換されます。table.@RequestHeader要求ヘッダーへのアクセス用。ヘッダー値は、宣言されたメソッド引数タイプに変換されます。@CookieValueクッキーへのアクセス用。Cookie値は、宣言されたメソッド引数タイプに変換されます。@RequestBodyHTTPリクエスト本文へのアクセス用。インスタンスを使用して、宣言されたメソッド引数タイプに変換されます。リアクティブ型をサポートします。HttpEntity<B>要求ヘッダーと本文へのアクセス用。インスタンスで変換されます。リアクティブ型をサポートします。リクエストの一部へのアクセス用。リアクティブ型をサポートします。マルチパートコンテンツおよびマルチパートデータを参照してください。org.springframework.ui.ModelMapHTMLコントローラーで使用され、ビューレンダリングの一部としてテンプレートに公開されるモデルへのアクセス用。@ModelAttributeデータバインディングと検証が適用されたモデル内の既存の属性(存在しない場合はインスタンス化)へのアクセス用。引数の検証およびデータバインディングからのエラーへのアクセス用。引数は、検証されたメソッド引数の直後に宣言する必要があります。アノテーションを介して宣言されたセッション属性のクリーンアップをトリガーします。UriComponentsBuilder現在のリクエストのホスト、ポート、スキーム、およびパスに関連するURLを準備します。URIリンクを参照してください。details.@RequestAttribute要求属性へのアクセス用。@ModelAttributeとして解決されます。MVC次の表に、サポートされているコントローラーメソッドの戻り値を示します。このようReactor、RxJava、などのライブラリからの反応タイプのことを注意または他の一般的にすべての戻り値のためにサポートされています。インスタンスを介してエンコードされ、応答に書き込まれます。インスタンスを介してエンコードされ、応答に書き込まれます。HttpHeadersヘッダーを含み、本文を含まない応答を返すため。org.springframework.ui.Model暗黙的なモデルに追加される属性。名はリクエストパスに基づいて暗黙的に決定されます。@ModelAttributeモデルに追加される属性。名はリクエストパスに基づいて暗黙的に決定されます。この表の後の「その他の戻り値」を参照してください。Renderingモデルおよびビューのレンダリングシナリオ用のAPI。アノテーションも持っている場合、応答を完全に処理したと見なされます。タイムスタンプチェックを行った場合も同様です。TODO:詳細については、コントローラーを参照してください。戻り型は、RESTコントローラーの「応答本文なし」またはHTMLコントローラーのデフォルトのビュー名選択を示すこともできます。Observable<ServerSentEvent>または他のリアクティブ型サーバー送信イベントを発行します。要求または宣言する必要があります)。(デフォルトのビュー名の選択が適用される)として、またはモデルに追加されるモデル属性として扱われます。決定された単純型でない場合は、未解決のままになります。@CookieValue)は型変換を必要とする場合があります。このような場合、構成されたコンバーターに基づいて型変換が自動的に適用されます。Dateなど)がサポートされています。登録(Springフィールドのフォーマットを参照)することによりカスタマイズできます。パスセグメントの名前と値のペアについて説明します。基づく「マトリックス変数」と呼ばれますが、URIパスパラメーターとも呼ばれます。MVCとは異なり、WebFluxでは、URL内のマトリックス変数の有無は要求マッピングに影響しません。URIコンテンツを使用して変数の内容をマスクする必要はありません。コントローラーメソッドからマトリックス変数にアクセスする場合は、マトリックス変数が予想されるパスセグメントにURI変数を追加する必要があります。次の例は、その方法を示しています。11}すべてのパスセグメントにマトリックス変数を含めることができるため、次の例に示すように、マトリックス変数がどのパス変数にあると予想されるかを明確にする必要がある場合があります。22}次の例に示すように、マトリックス変数をオプションとして定義し、デフォルト値を指定できます。1}すべての行列変数を取得するには、次の例に示すように、MultiValueMapを使用します。アノテーションを使用して、クエリパラメーターをコントローラーのメソッド引数にバインドできます。次のコードスニペットは使用方法を示しています。@RequestParamを使用します。@RequestParamを使用します。サーブレットAPIの「リクエストパラメータ」の概念は、クエリパラメータ、フォームデータ、およびマルチパートを1つにまとめます。ServerWebExchangeを介して個別にアクセスします。クエリパラメータのみにバインドしますが、データバインドを使用して、クエリパラメータ、フォームデータ、およびマルチパートをコマンドオブジェクトに適用できます。ラッパーで引数を宣言することにより、メソッドパラメータがオプションであることを指定できます。Stringでない場合、タイプ変換が自動的に適用されます。[mvc-ann-typeconversion]を参照してください。引数で宣言されると、マップにはすべてのクエリパラメーターが入力されます。アノテーションを使用して、リクエストヘッダーをコントローラーのメソッド引数にバインドできます。次の例は、ヘッダー付きのリクエストを示しています。ヘッダーの値を取得します。ヘッダーの値を取得します。ヘッダーの値を取得します。ヘッダーの値を取得します。ヘッダーの値を取得します。Stringでない場合、タイプ変換が自動的に適用されます。[mvc-ann-typeconversion]を参照してください。引数で使用される場合、マップにはすべてのヘッダー値が入力されます。コンマ区切りの文字列を、文字列の配列またはコレクション、または型変換システムに既知の他の型に変換するための組み込みサポートが利用可能です。List<String>である場合もあります。Cookieの値をコントローラーのメソッド引数にバインドできます。次の例は、Cookieを使用したリクエストを示しています。JSESSIONID=415A4AC178C59DACE0B2C9CA727CDD84次のコードサンプルは、Cookie値を取得する方法を示しています。Cookie値を取得します。Cookie値を取得します。Stringでない場合、タイプ変換が自動的に適用されます。[mvc-ann-typeconversion]を参照してください。アノテーションを使用して、モデルの属性にアクセスしたり、存在しない場合はインスタンス化したりできます。モデル属性は、フィールド名に一致する名前を持つクエリパラメータとフォームフィールドの値でオーバーレイされます。これはデータバインディングと呼ばれ、個々のクエリパラメータとフォームフィールドの解析と変換に対処する必要がなくなります。次の例では、Petのインスタンスをバインドします。Petのインスタンスをバインドします。Petのインスタンスをバインドします。インスタンスは、次のように解決されます。介して既に追加されている場合はモデルから。デフォルトのコンストラクターの呼び出しから。クエリパラメータまたはフォームフィールドに一致する引数を持つ「プライマリコンストラクター」の呼び出しから。バイトコード内の実行時保持パラメーター名によって決定されます。モデル属性インスタンスが取得された後、データバインディングが適用されます。Objectのフィールド名に一致させます。一致するフィールドは、必要に応じて型変換が適用された後に入力されます。データバインディング(および検証)の詳細については、検証を参照してください。データバインディングはエラーになる可能性があります。BindingResultを追加します。BindingResultを追加します。バリデーションおよびSpring検証も参照)。アノテーションを使用しています。