アノテーションインターフェース MessageMapping
@TargetSE({TYPESE,METHODSE})
@RetentionSE(RUNTIMESE)
@DocumentedSE
@Reflective(MessageMappingReflectiveProcessor.class)
public @interface MessageMapping
宣言された
patterns
をメッセージから抽出された宛先に一致させることにより、Message
をメッセージ処理メソッドにマッピングするためのアノテーション。アノテーションは、すべてのクラスメソッドでパターンプレフィックスを宣言する方法として、型レベルでもサポートされています。@MessageMapping
メソッドは、次の引数をサポートしています。
@Payload
メソッド引数。メッセージのペイロードを抽出し、宣言されたターゲット型にデシリアライズします。@Payload
引数には、@Validated
などの検証アノテーションが付けられ、JSR-303 検証が適用されます。アノテーションは、他の方法では処理されない引数に対してデフォルトで想定されるため、存在する必要はありません。- メッセージ宛先から抽出されたテンプレート変数値にアクセスするための
@DestinationVariable
メソッド引数。/hotels/{hotel}
必要に応じて、変数値を String から宣言されたメソッド引数型に変換することもできます。 - 特定のメッセージヘッダー値を抽出し、
Converter
を適用して、値を宣言されたターゲット型に変換する@Header
メソッド引数。 - すべてのヘッダーへのアクセスのために
Map
SE にも割り当て可能な@Headers
メソッド引数。 - すべてのヘッダーにアクセスするための
MessageHeaders
メソッド引数。 - すべてのヘッダーにアクセスするための
MessageHeaderAccessor
メソッド引数。STOMP over WebSocket のような一部の処理シナリオでは、これはSimpMessageHeaderAccessor
などの特殊化である場合もあります。 - 宣言された型に一致するために必要に応じてボディが逆直列化されたボディおよびヘッダーへのアクセスのための
Message<T>
。 Principal
SE メソッド引数は、WebSocket を介した STOMP などの一部の処理シナリオでサポートされています。認証されたユーザーを反映します。
戻り値の処理は、処理シナリオによって異なります。
- STOMP over WebSocket- 値はメッセージに変換され、デフォルトのレスポンス宛先または
@SendTo
または@SendToUser
アノテーションで指定されたカスタム宛先に送信されます。 - RSocket- レスポンスは、ストリームリクエストにレスポンスするために使用されます。
このアノテーションの専門分野には、@SubscribeMapping
(例: STOMP サブスクリプション)および @ConnectMapping
(例: RSocket 接続)が含まれます。どちらもプライマリマッピングをさらに絞り込み、メッセージ型と照合します。両方を、共通のパターンプレフィックスを宣言する型レベルの @MessageMapping
と組み合わせることができます。
さまざまなコンテキストでのこのアノテーションの使用の詳細については、Spring Framework リファレンスの以下のセクションを参照してください。
- WebSocket 「アノテーション付きコントローラー」を介した STOMP。
- RSocket 「アノテーション付き応答者」
注 : コントローラーインターフェース(AOP プロキシなど)を使用する場合、@MessageMapping
や @SubscribeMapping
などのすべてのマッピングアノテーションを、実装クラスではなくコントローラーインターフェースに一貫して配置するようにしてください。
- 導入:
- 4.0
- 作成者:
- Rossen Stoyanchev
- 関連事項:
オプション要素のサマリー
要素の詳細
value
StringSE[] valueこのアノテーションによって表される宛先ベースのマッピング。STOMP over WebSocket メッセージの場合、これは
AntPathMatcher
-style パターンがメッセージの STOMP 宛先と照合されます。RSocket の場合、これは
AntPathMatcher
またはPathPattern
ベースのパターンであり、設定に応じて、ストリームリクエストのルートに一致します。パターンが設定されていない場合、マッピングはすべての宛先に一致します。
- デフォルト:
- {}