クラス AbstractMethodMessageHandler<T>

java.lang.ObjectSE
org.springframework.messaging.handler.invocation.reactive.AbstractMethodMessageHandler<T>
型パラメーター:
T - 情報マッピング情報を含むオブジェクトの型
実装されたすべてのインターフェース:
AwareBeanNameAwareInitializingBeanApplicationContextAwareReactiveMessageHandler
既知の直属サブクラス
MessageMappingMessageHandler

public abstract class AbstractMethodMessageHandler<T> extends ObjectSE implements ReactiveMessageHandler, ApplicationContextAware, InitializingBean, BeanNameAware
リアクティブ HandlerMethod ベースのメッセージ処理の抽象基本クラス。起動時にハンドラーメソッドを検出し、実行時に特定のメッセージに一致するハンドラーメソッドを見つけて呼び出すために必要なロジックのほとんどを提供します。

メッセージ処理中に発生した例外を処理するための例外処理メソッドの検出と呼び出しもサポートしています。

導入:
5.2
作成者:
Rossen Stoyanchev
  • フィールドの詳細

    • logger

      protected final Log logger
  • コンストラクターの詳細

    • AbstractMethodMessageHandler

      public AbstractMethodMessageHandler()
  • メソッドの詳細

    • setHandlerPredicate

      public void setHandlerPredicate(@Nullable PredicateSE<ClassSE<?>> handlerPredicate)
      メッセージハンドラーメソッドの存在を確認する Spring Bean を選択するための述語を設定します。

      これはデフォルトでは設定されていません。ただし、サブクラスはこれを何らかのデフォルト戦略に初期化する場合があります (たとえば、@Controller クラス)。

      関連事項:
    • getHandlerPredicate

      @Nullable public PredicateSE<ClassSE<?>> getHandlerPredicate()
      configured ハンドラー述語を返します。
    • setHandlers

      public void setHandlers(ListSE<ObjectSE> handlers)
      ハンドラーを手動で構成して、メッセージ処理メソッドの存在を確認します。これにより、handlerPredicate による自動検出も無効になります。自動検出を無効にしたくない場合は、最初にこのメソッドを呼び出してから、ハンドラー述語を設定します。
      パラメーター:
      handlers - チェックするハンドラー
    • setArgumentResolverConfigurer

      public void setArgumentResolverConfigurer(ArgumentResolverConfigurer configurer)
      ハンドラーメソッド引数のカスタムリゾルバーを構成します。
    • getArgumentResolverConfigurer

      public ArgumentResolverConfigurer getArgumentResolverConfigurer()
      ハンドラーメソッドの引数に構成されたカスタムリゾルバーを返します。
    • setReturnValueHandlerConfigurer

      public void setReturnValueHandlerConfigurer(ReturnValueHandlerConfigurer configurer)
      ハンドラーメソッドのカスタム戻り値ハンドラーを構成します。
    • getReturnValueHandlerConfigurer

      public ReturnValueHandlerConfigurer getReturnValueHandlerConfigurer()
      設定された戻り値ハンドラーを返します。
    • setReactiveAdapterRegistry

      public void setReactiveAdapterRegistry(ReactiveAdapterRegistry registry)
      さまざまなリアクティブ型を適応させるためにレジストリを構成します。

      デフォルトでは、これはデフォルト設定の ReactiveAdapterRegistry のインスタンスです。

    • getReactiveAdapterRegistry

      public ReactiveAdapterRegistry getReactiveAdapterRegistry()
      リアクティブ型を適応させるために構成されたレジストリを返します。
    • setApplicationContext

      public void setApplicationContext(@Nullable ApplicationContext applicationContext)
      インターフェースからコピーされた説明: ApplicationContextAware
      このオブジェクトが実行される ApplicationContext を設定します。通常、この呼び出しはオブジェクトの初期化に使用されます。

      通常の Bean プロパティの設定後、ただし InitializingBean.afterPropertiesSet() またはカスタム init メソッドなどの init コールバックの前に呼び出されます。ResourceLoaderAware.setResourceLoader(org.springframework.core.io.ResourceLoader)ApplicationEventPublisherAware.setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher) および MessageSourceAware の後に呼び出されます(該当する場合)。

      次で指定:
      インターフェース ApplicationContextAwaresetApplicationContext 
      パラメーター:
      applicationContext - このオブジェクトによって使用される ApplicationContext オブジェクト
      関連事項:
    • getApplicationContext

      @Nullable public ApplicationContext getApplicationContext()
    • setBeanName

      public void setBeanName(StringSE name)
      インターフェースからコピーされた説明: BeanNameAware
      この Bean を作成した Bean ファクトリで Bean の名前を設定します。

      通常の Bean プロパティの設定後、ただし InitializingBean.afterPropertiesSet() またはカスタム init メソッドなどの init コールバックの前に呼び出されます。

      次で指定:
      インターフェース BeanNameAwaresetBeanName 
      パラメーター:
      name - ファクトリ内の Bean の名前。この名前は、ファクトリで使用される実際の Bean 名であり、最初に指定した名前とは異なる場合があります。特に内部 Bean 名の場合、実際の Bean 名は "#..." サフィックスを追加することで一意になります。必要に応じて、BeanFactoryUtils.originalBeanName(String) メソッドを使用して、元の Bean 名(サフィックスなし)を抽出します。
    • getBeanName

      public StringSE getBeanName()
    • registerExceptionHandlerAdvice

      protected void registerExceptionHandlerAdvice(MessagingAdviceBean bean, AbstractExceptionHandlerMethodResolver resolver)
      サブクラスはこのメソッドを呼び出して MessagingAdviceBean キャッシュにデータを設定できます (たとえば、「グローバル」 @MessageExceptionHandler をサポートするため)。
    • getHandlerMethods

      public MapSE<T,HandlerMethod> getHandlerMethods()
      すべてのハンドラーメソッドとそのマッピングを含む読み取り専用マップを返します。
    • getDestinationLookup

      public MultiValueMap<StringSE,T> getDestinationLookup()
      マッピングを直接検索する読み取り専用の複数値マップを返します (たとえば、パターン以外の宛先の場合)。
    • getArgumentResolvers

      protected HandlerMethodArgumentResolverComposite getArgumentResolvers()
      afterPropertiesSet() の間に初期化された引数リゾルバーを返します。主にサブクラスでの内部使用のため。
      導入:
      5.2.2
    • afterPropertiesSet

      public void afterPropertiesSet()
      インターフェースからコピーされた説明: InitializingBean
      すべての Bean プロパティを設定し、BeanFactoryAwareApplicationContextAware などを満たした後、包含 BeanFactory によって呼び出されます。

      このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。

      次で指定:
      インターフェース InitializingBeanafterPropertiesSet 
    • initArgumentResolvers

      protected abstract ListSE<? extends HandlerMethodArgumentResolver> initArgumentResolvers()
      使用する引数リゾルバーのリストを返します。

      サブクラスでは、setArgumentResolverConfigurer(org.springframework.messaging.handler.invocation.reactive.ArgumentResolverConfigurer) を介して構成されたカスタム引数型も考慮する必要があります。

    • initReturnValueHandlers

      protected abstract ListSE<? extends HandlerMethodReturnValueHandler> initReturnValueHandlers()
      使用する戻り値ハンドラーのリストを返します。

      サブクラスは、setReturnValueHandlerConfigurer(org.springframework.messaging.handler.invocation.reactive.ReturnValueHandlerConfigurer) を介して構成されたカスタム戻り値型も考慮する必要があります。

    • detectHandlerMethods

      protected final void detectHandlerMethods(ObjectSE handler)
      指定されたハンドラーにメッセージを処理できるメソッドがあるかどうかを検出し、ある場合は抽出されたマッピング情報に登録します。

      注意 : このメソッドは保護されており、サブクラスから呼び出すことができますが、これは registerHandlerMethod(java.lang.Object, java.lang.reflect.Method, T) に記載されているように、起動時にのみ実行する必要があります。

      パラメーター:
      handler - チェックするハンドラー、Spring Bean 名のインスタンス
    • getMappingForMethod

      @Nullable protected abstract T getMappingForMethod(MethodSE method, ClassSE<?> handlerType)
      存在する場合は、指定されたメソッドのマッピングを取得します。
      パラメーター:
      method - チェックする方法
      handlerType - ハンドラー型、場合によってはメソッドの宣言クラスのサブ型
      戻り値:
      マッピング、またはメソッドがマッピングされていない場合は null 
    • registerHandlerMethod

      public final void registerHandlerMethod(ObjectSE handler, MethodSE method, T mapping)
      ハンドラーメソッドとその一意のマッピングを登録します。

      注意 : 5.3 では、このメソッドは(保護されているためはなく)パブリックであり、起動時と実行時の両方で使用できます。

      パラメーター:
      handler - ハンドラーまたはハンドラーインスタンスの Bean 名
      method - 登録する方法
      mapping - ハンドラーメソッドに関連付けられたマッピング条件
      例外:
      IllegalStateExceptionSE - 別のメソッドが同じマッピングですでに登録されている場合
    • extendMapping

      protected T extendMapping(T mapping, HandlerMethod handlerMethod)
      このメソッドは、マッピングが追加される直前に呼び出されます。これにより、サブクラスは HandlerMethod を考慮してマッピングを更新できます。これは、たとえば入力と出力のカーディナリティに基づいてメソッドシグネチャーを使用してマッピングを調整する場合に役立ちます。

      デフォルトでは、このメソッドは渡されたマッピングを返します。

      パラメーター:
      mapping - 追加されるマッピング
      handlerMethod - マッピングのターゲットハンドラー
      戻り値:
      新しいマッピングまたは同じ
      導入:
      5.2.2
    • getDirectLookupMappings

      protected abstract SetSE<StringSE> getDirectLookupMappings(T mapping)
      指定されたマッピングがある場合、文字列ベースの宛先を返します。これは、直接ルックアップ(つまり、非パターン)で一致を見つけるために使用できます。

      注意 : これは完全にオプションです。サブクラスのマッピングメタデータは、直接検索も文字列ベースの宛先もサポートしない場合があります。

    • handleMessage

      public reactor.core.publisher.Mono<VoidSE> handleMessage(Message<?> message) throws MessagingException
      インターフェースからコピーされた説明: ReactiveMessageHandler
      指定されたメッセージを処理します。
      次で指定:
      インターフェース ReactiveMessageHandlerhandleMessage 
      パラメーター:
      message - 処理するメッセージ
      戻り値:
      メッセージ処理の結果の完了 Mono 
      例外:
      MessagingException
    • handleMatch

      protected reactor.core.publisher.Mono<VoidSE> handleMatch(T mapping, HandlerMethod handlerMethod, Message<?> message)
    • getDestination

      @Nullable protected abstract RouteMatcher.Route getDestination(Message<?> message)
      指定されたメッセージから宛先を抽出します。
      関連事項:
    • getMatchingMapping

      @Nullable protected abstract T getMatchingMapping(T mapping, Message<?> message)
      マッピングが現在のメッセージと一致するかどうかを確認し、現在のリクエストに関連する条件を含む新しいマッピングを返す可能性があります。
      パラメーター:
      mapping - 一致を取得するマッピング
      message - 処理されているメッセージ
      戻り値:
      一致、または一致がない場合は null 
    • getMappingComparator

      protected abstract ComparatorSE<T> getMappingComparator(Message<?> message)
      一致するマッピングをソートするためのコンパレータを返します。返されたコンパレータは、「より良い」一致をより高い順に並べ替えます。
      パラメーター:
      message - 現在のメッセージ
      戻り値:
      コンパレータ、決して null
    • handleNoMatch

      protected void handleNoMatch(@Nullable RouteMatcher.Route destination, Message<?> message)
      一致するハンドラーが見つからないときに呼び出されます。
      パラメーター:
      destination - 宛先
      message - メッセージ
    • createExceptionMethodResolverFor

      protected abstract AbstractExceptionHandlerMethodResolver createExceptionMethodResolverFor(ClassSE<?> beanType)
      いくつかの条件(たとえば、@MessageExceptionHandler の存在)に基づいて例外処理メソッドを検索する AbstractExceptionHandlerMethodResolver の具体的なインスタンスを作成します。
      パラメーター:
      beanType - 処理中に例外が発生したクラス
      戻り値:
      使用するリゾルバー