クラス MessageMappingMessageHandler
- 実装されたすべてのインターフェース:
Aware
、BeanNameAware
、InitializingBean
、ApplicationContextAware
、EmbeddedValueResolverAware
、ReactiveMessageHandler
- 既知の直属サブクラス
RSocketMessageHandler
@MessageMapping
メソッドを介したリアクティブでノンブロッキングなメッセージ処理のための AbstractMethodMessageHandler
の拡張。デフォルトでは、そのようなメソッドは @Controller
Spring Bean で検出されますが、これは AbstractMethodMessageHandler.setHandlerPredicate(Predicate)
で変更できます。 受信メッセージのペイロードは、PayloadMethodArgumentResolver
を使用して、構成された setDecoders(List)
デコーダーを介してデコードされます。
戻り値のデフォルトの処理はありませんが、AbstractMethodMessageHandler.setReturnValueHandlerConfigurer(org.springframework.messaging.handler.invocation.reactive.ReturnValueHandlerConfigurer)
を使用してカスタムの戻り値ハンドラーを構成できます。サブクラスは、initReturnValueHandlers()
をオーバーライドして、デフォルトの戻り値ハンドラーを設定することもできます。
- 導入:
- 5.2
- 作成者:
- Rossen Stoyanchev
- 関連事項:
フィールドのサマリー
クラス org.springframework.messaging.handler.invocation.reactive.AbstractMethodMessageHandler から継承されたフィールド
logger
コンストラクターのサマリー
コンストラクターメソッドのサマリー
修飾子と型メソッド説明void
protected AbstractExceptionHandlerMethodResolver
createExceptionMethodResolverFor
(ClassSE<?> beanType) いくつかの条件(たとえば、@MessageExceptionHandler
の存在)に基づいて例外処理メソッドを検索するAbstractExceptionHandlerMethodResolver
の具体的なインスタンスを作成します。protected CompositeMessageCondition
getCondition
(AnnotatedElementSE element) 指定されたアノテーション付き要素のマッピング条件を決定します。設定された ConversionService を返します。構成されたデコーダーを返します。protected RouteMatcher.Route
getDestination
(Message<?> message) 指定されたメッセージから宛先を抽出します。指定されたマッピングがある場合、文字列ベースの宛先を返します。直接ルックアップで一致を見つけるために使用できます(つまりprotected ComparatorSE<CompositeMessageCondition>
getMappingComparator
(Message<?> message) 一致するマッピングをソートするためのコンパレーターを返します。protected CompositeMessageCondition
getMappingForMethod
(MethodSE method, ClassSE<?> handlerType) 存在する場合は、指定されたメソッドのマッピングを取得します。protected CompositeMessageCondition
getMatchingMapping
(CompositeMessageCondition mapping, Message<?> message) マッピングが現在のメッセージと一致するかどうかを確認し、現在のリクエストに関連する条件を含む新しいマッピングを返す可能性があります。メッセージをハンドラーにマップするために使用されるRouteMatcher
を返します。設定された Validator インスタンスを返します。protected reactor.core.publisher.Mono<VoidSE>
handleMatch
(CompositeMessageCondition mapping, HandlerMethod handlerMethod, Message<?> message) protected ListSE<? extends HandlerMethodArgumentResolver>
使用する引数リゾルバーのリストを返します。protected ListSE<? extends HandlerMethodReturnValueHandler>
使用する戻り値ハンドラーのリストを返します。protected RouteMatcher
RouteMatcher
を入手して実際に使用してください。protected StringSE[]
processDestinations
(StringSE[] destinations) 指定された宛先のプレースホルダーを解決します。void
このメソッドを使用して、グローバルに適用可能な@MessageExceptionHandler
メソッドを含む可能性のあるMessagingAdviceBean
を登録します。void
setConversionService
(ConversionService conversionService) 宛先変数やヘッダーなどの文字列ベースの値の型変換に使用するConversionService
を構成します。void
setDecoders
(ListSE<? extends Decoder<?>> decoders) 受信ペイロードに使用するデコーダーを構成します。void
setEmbeddedValueResolver
(StringValueResolver resolver) StringValueResolver を設定して、埋め込まれた定義値の解決に使用します。void
setRouteMatcher
(RouteMatcher routeMatcher) RouteMatcher
を設定して、設定されているルートパターンに基づいてメッセージをハンドラーにマッピングするために使用します。void
setValidator
(Validator validator) @Payload
引数の検証に使用される Validator インスタンスを設定します。クラス org.springframework.messaging.handler.invocation.reactive.AbstractMethodMessageHandler から継承されたメソッド
detectHandlerMethods, extendMapping, getApplicationContext, getArgumentResolverConfigurer, getArgumentResolvers, getBeanName, getDestinationLookup, getHandlerMethods, getHandlerPredicate, getReactiveAdapterRegistry, getReturnValueHandlerConfigurer, handleMessage, handleNoMatch, registerExceptionHandlerAdvice, registerHandlerMethod, setApplicationContext, setArgumentResolverConfigurer, setBeanName, setHandlerPredicate, setHandlers, setReactiveAdapterRegistry, setReturnValueHandlerConfigurer
コンストラクターの詳細
MessageMappingMessageHandler
public MessageMappingMessageHandler()
メソッドの詳細
setDecoders
受信ペイロードに使用するデコーダーを構成します。getDecoders
構成されたデコーダーを返します。setValidator
@Payload
引数の検証に使用される Validator インスタンスを設定します。getValidator
設定された Validator インスタンスを返します。setRouteMatcher
RouteMatcher
を設定して、設定されているルートパターンに基づいてメッセージをハンドラーにマッピングするために使用します。デフォルトでは、
SimpleRouteMatcher
が使用され、AntPathMatcher
に "." が付いています。セパレータ。効率を上げるには、代わりにspring-web
のPathPatternRouteMatcher
を使用することを検討してください。getRouteMatcher
メッセージをハンドラーにマップするために使用されるRouteMatcher
を返します。コンポーネントが初期化される前はnull
である可能性があります。obtainRouteMatcher
RouteMatcher
を入手して実際に使用してください。- 戻り値:
- RouteMatcher (非
null
) - 例外:
IllegalStateExceptionSE
- RouteMatcher セットがない場合- 導入:
- 5.0
setConversionService
宛先変数やヘッダーなどの文字列ベースの値の型変換に使用するConversionService
を構成します。デフォルトでは、
DefaultFormattingConversionService
が使用されます。- パラメーター:
conversionService
- 使用する変換サービス
getConversionService
設定された ConversionService を返します。setEmbeddedValueResolver
インターフェースからコピーされた説明:EmbeddedValueResolverAware
StringValueResolver を設定して、埋め込まれた定義値の解決に使用します。- 次で指定:
- インターフェース
EmbeddedValueResolverAware
のsetEmbeddedValueResolver
registerMessagingAdvice
このメソッドを使用して、グローバルに適用可能な@MessageExceptionHandler
メソッドを含む可能性のあるMessagingAdviceBean
を登録します。メモ: spring-messaging は spring-web に依存しないため、
@ControllerAdvice
Bean の登録を明示的にサポートすることはできません。次のアダプターコードを使用して、ここで@ControllerAdvice
Bean を登録できます。ControllerAdviceBean.findAnnotatedBeans(context).forEach(bean -> messageHandler.registerMessagingAdvice(new ControllerAdviceWrapper(bean)); public class ControllerAdviceWrapper implements MessagingAdviceBean { private final ControllerAdviceBean delegate; // delegate all methods }
- パラメーター:
bean
-@MessageExceptionHandler
メソッドをチェックするための Bean- 導入:
- 5.3.5
afterPropertiesSet
public void afterPropertiesSet()インターフェースからコピーされた説明:InitializingBean
すべての Bean プロパティを設定し、BeanFactoryAware
、ApplicationContextAware
などを満たした後、包含BeanFactory
によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
- 次で指定:
- インターフェース
InitializingBean
のafterPropertiesSet
- オーバーライド:
- クラス
AbstractMethodMessageHandler<CompositeMessageCondition>
のafterPropertiesSet
initArgumentResolvers
クラスからコピーされた説明:AbstractMethodMessageHandler
使用する引数リゾルバーのリストを返します。サブクラスでは、
AbstractMethodMessageHandler.setArgumentResolverConfigurer(org.springframework.messaging.handler.invocation.reactive.ArgumentResolverConfigurer)
を介して構成されたカスタム引数型も考慮する必要があります。initReturnValueHandlers
クラスからコピーされた説明:AbstractMethodMessageHandler
使用する戻り値ハンドラーのリストを返します。サブクラスは、
AbstractMethodMessageHandler.setReturnValueHandlerConfigurer(org.springframework.messaging.handler.invocation.reactive.ReturnValueHandlerConfigurer)
を介して構成されたカスタム戻り値型も考慮する必要があります。getMappingForMethod
@Nullable protected CompositeMessageCondition getMappingForMethod(MethodSE method, ClassSE<?> handlerType) クラスからコピーされた説明:AbstractMethodMessageHandler
存在する場合は、指定されたメソッドのマッピングを取得します。- 次で指定:
- クラス
AbstractMethodMessageHandler<CompositeMessageCondition>
のgetMappingForMethod
- パラメーター:
method
- チェックする方法handlerType
- ハンドラー型、場合によってはメソッドの宣言クラスのサブ型- 戻り値:
- マッピング、またはメソッドがマッピングされていない場合は
null
getCondition
指定されたアノテーション付き要素のマッピング条件を決定します。- パラメーター:
element
- チェックする要素- 戻り値:
- 条件、または
null
processDestinations
指定された宛先のプレースホルダーを解決します。- パラメーター:
destinations
- 宛先- 戻り値:
- 処理された宛先を持つ新しい配列または同じ配列
getDirectLookupMappings
クラスからコピーされた説明:AbstractMethodMessageHandler
指定されたマッピングがある場合、文字列ベースの宛先を返します。これは、直接ルックアップ(つまり、非パターン)で一致を見つけるために使用できます。注意 : これは完全にオプションです。サブクラスのマッピングメタデータは、直接検索も文字列ベースの宛先もサポートしない場合があります。
getDestination
クラスからコピーされた説明:AbstractMethodMessageHandler
指定されたメッセージから宛先を抽出します。getMatchingMapping
@Nullable protected CompositeMessageCondition getMatchingMapping(CompositeMessageCondition mapping, Message<?> message) クラスからコピーされた説明:AbstractMethodMessageHandler
マッピングが現在のメッセージと一致するかどうかを確認し、現在のリクエストに関連する条件を含む新しいマッピングを返す可能性があります。- 次で指定:
- クラス
AbstractMethodMessageHandler<CompositeMessageCondition>
のgetMatchingMapping
- パラメーター:
mapping
- 一致を取得するマッピングmessage
- 処理されているメッセージ- 戻り値:
- 一致、または一致がない場合は
null
getMappingComparator
クラスからコピーされた説明:AbstractMethodMessageHandler
一致するマッピングをソートするためのコンパレータを返します。返されたコンパレータは、「より良い」一致をより高い順に並べ替えます。- 次で指定:
- クラス
AbstractMethodMessageHandler<CompositeMessageCondition>
のgetMappingComparator
- パラメーター:
message
- 現在のメッセージ- 戻り値:
- コンパレータ、決して
null
createExceptionMethodResolverFor
protected AbstractExceptionHandlerMethodResolver createExceptionMethodResolverFor(ClassSE<?> beanType) クラスからコピーされた説明:AbstractMethodMessageHandler
いくつかの条件(たとえば、@MessageExceptionHandler
の存在)に基づいて例外処理メソッドを検索するAbstractExceptionHandlerMethodResolver
の具体的なインスタンスを作成します。- 次で指定:
- クラス
AbstractMethodMessageHandler<CompositeMessageCondition>
のcreateExceptionMethodResolverFor
- パラメーター:
beanType
- 処理中に例外が発生したクラス- 戻り値:
- 使用するリゾルバー
handleMatch
protected reactor.core.publisher.Mono<VoidSE> handleMatch(CompositeMessageCondition mapping, HandlerMethod handlerMethod, Message<?> message) - オーバーライド:
- クラス
AbstractMethodMessageHandler<CompositeMessageCondition>
のhandleMatch