@Target(value={TYPE,METHOD})
@Retention(value=RUNTIME)
@Documented
public @interface MessageMapping
Message
をメッセージ処理メソッドにマッピングするためのアノテーション。このアノテーションは、型レベルでも使用できます。この場合、メソッドレベルの @SubscribeMapping
アノテーションを含むすべてのメソッドレベルのアノテーションに共通の宛先プレフィックスまたはパターンを定義します。このアノテーションが付けられたハンドラーメソッドは、柔軟なシグネチャーを持つことができます。これらは、次の型の引数を任意の順序で持つことができます。
Message
を使用して、処理中の完全なメッセージにアクセスできます。Payload
- メッセージのペイロードを抽出し、オプションで MessageConverter
を使用して変換するアノテーション付きメソッド引数。アノテーションが付けられていないメソッド引数にはデフォルトで想定されているため、アノテーションの存在は必要ありません。検証アノテーション(Validated
など)でアノテーションが付けられたペイロードメソッド引数は、JSR-303 検証の対象になります。Header
- 特定のヘッダー値を抽出するためのアノテーション付きメソッド引数と、必要に応じて Converter
を使用した型変換。Headers
- すべてのヘッダーにアクセスするために Map
にも割り当て可能でなければならないアノテーション付き引数。MessageHeaders
引数。MessageHeaderAccessor
または SZMP over WebSocket のサポートは、SimpMessageHeaderAccessor
などのサブクラスを使用して、すべてのメソッド引数に簡単にアクセスできます。DestinationVariable
- メッセージの宛先から抽出されたテンプレート変数値にアクセスするためのアノテーション付き引数(/hotels/{hotel}) など)。変数値は、宣言されたメソッド引数型に変換されます。Principal
メソッドの引数は、WebSocket メッセージ上の STOMP でサポートされています。これは、メッセージが受信された WebSocket セッションにログインしたユーザーを反映しています。通常の HTTP ベースの認証(Spring Security ベースなど)を使用して、WebSocket セッションを開始する HTTP ハンドシェイクを保護できます。 戻り値はメッセージとしてラップされ、デフォルトのレスポンス宛先または @SendTo
メソッドレベルのアノテーションで指定されたカスタム宛先に送信されます。このようなレスポンスは、ListenableFuture
戻り値の型または対応する JDK 8 CompletableFuture
/ CompletionStage
ハンドルを介して非同期的に提供される場合もあります。
@SendTo
アノテーションは必須ではありません — デフォルトでは、メッセージは受信メッセージと同じ宛先に送信されますが、プレフィックスが追加されます(デフォルトでは "/topic"
)。接続されている場合、SendToUser
アノテーションを使用してメッセージを特定のユーザーに送信することもできます。戻り値は MessageConverter
で変換されます。
注 : コントローラーインターフェース(AOP プロキシなど)を使用する場合、@MessageMapping
や @SubscribeMapping
などのすべてのマッピングアノテーションを、実装クラスではなくコントローラーインターフェースに一貫して配置するようにしてください。
SimpAnnotationMethodMessageHandler
修飾子と型 | オプションの要素と説明 |
---|---|
java.lang.String[] | value このアノテーションによって表される宛先ベースのマッピング。 |