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