クラス SimpleApplicationEventMulticaster

java.lang.ObjectSE
org.springframework.context.event.AbstractApplicationEventMulticaster
org.springframework.context.event.SimpleApplicationEventMulticaster
実装されたすべてのインターフェース:
AwareBeanClassLoaderAwareBeanFactoryAwareApplicationEventMulticaster

public class SimpleApplicationEventMulticaster extends AbstractApplicationEventMulticaster
ApplicationEventMulticaster インターフェースの単純な実装。

登録されたすべてのリスナーにすべてのイベントをマルチキャストします。関心のないイベントを無視するのはリスナーに任せます。リスナーは通常、渡されたイベントオブジェクトに対して対応する instanceof チェックを実行します。

デフォルトでは、すべてのリスナーは呼び出しスレッドで呼び出されます。これにより、不正なリスナーがアプリケーション全体をブロックする危険性はなくなりますが、オーバーヘッドは最小限に抑えられます。別のタスクエグゼキュータを指定して、たとえばスレッドプールからなど、さまざまなスレッドでリスナーを実行します。

作成者:
Rod Johnson, Juergen Hoeller, Stephane Nicoll, Brian Clozel
関連事項:
  • コンストラクターの詳細

    • SimpleApplicationEventMulticaster

      public SimpleApplicationEventMulticaster()
      新しい SimpleApplicationEventMulticaster を作成します。
    • SimpleApplicationEventMulticaster

      public SimpleApplicationEventMulticaster(BeanFactory beanFactory)
      指定された BeanFactory の新しい SimpleApplicationEventMulticaster を作成します。
  • メソッドの詳細

    • setTaskExecutor

      public void setTaskExecutor(@Nullable ExecutorSE taskExecutor)
      各リスナーを呼び出すカスタムエグゼキューター(通常は TaskExecutor)を設定します。

      デフォルトは SyncTaskExecutor と同じで、すべてのリスナーを呼び出しスレッドで同期的に実行します。

      すべてのリスナーが実行されるまで呼び出し元をブロックしないように、ここで非同期タスクエグゼキューターを指定することを検討してください。ただし、TaskExecutor がこれを明示的にサポートしない限り、非同期実行は呼び出し元のスレッドコンテキスト (クラスローダー、トランザクションコンテキスト) に参加しないことに注意してください。

      非同期実行のサポートを宣言しない ApplicationListener インスタンス ( ApplicationListener.supportsAsyncExecution() は常に、イベントを発行した元のスレッド内で実行されます。例: トランザクション同期 TransactionalApplicationListener )。

      導入:
      2.0
      関連事項:
    • getTaskExecutor

      @Nullable protected ExecutorSE getTaskExecutor()
      このマルチキャスターの現在のタスク実行プログラムを返します。
      導入:
      2.0
    • setErrorHandler

      public void setErrorHandler(@Nullable ErrorHandler errorHandler)
      リスナーから例外がスローされた場合に呼び出されるように ErrorHandler を設定します。

      デフォルトは none で、リスナー例外は現在のマルチキャストを停止し、現在のイベントのパブリッシャーに伝搬されます。タスクエグゼキューターが指定されている場合、個々のリスナー例外はエグゼキューターに伝達されますが、必ずしも他のリスナーの実行を停止するわけではありません。

      例外をキャッチしてログに記録する ErrorHandler 実装(TaskUtils.LOG_AND_SUPPRESS_ERROR_HANDLER のように)または例外をログに記録しながら実装する(TaskUtils.LOG_AND_PROPAGATE_ERROR_HANDLER など)設定を検討してください。

      導入:
      4.1
    • getErrorHandler

      @Nullable protected ErrorHandler getErrorHandler()
      このマルチキャスターの現在のエラーハンドラーを返します。
      導入:
      4.1
    • multicastEvent

      public void multicastEvent(ApplicationEvent event)
      インターフェースからコピーされた説明: ApplicationEventMulticaster
      指定されたアプリケーションイベントを適切なリスナーにマルチキャストします。

      ジェネリクスベースのイベントのサポートが向上するため、可能であれば ApplicationEventMulticaster.multicastEvent(ApplicationEvent, ResolvableType) の使用を検討してください。

      一致する ApplicationListener が非同期実行をサポートしていない場合は、このマルチキャスト呼び出しの呼び出しスレッド内で実行する必要があります。

      パラメーター:
      event - マルチキャストするイベント
      関連事項:
    • multicastEvent

      public void multicastEvent(ApplicationEvent event, @Nullable ResolvableType eventType)
      インターフェースからコピーされた説明: ApplicationEventMulticaster
      指定されたアプリケーションイベントを適切なリスナーにマルチキャストします。

      eventType が null の場合、デフォルトの型は event インスタンスに基づいて構築されます。

      一致する ApplicationListener が非同期実行をサポートしていない場合は、このマルチキャスト呼び出しの呼び出しスレッド内で実行する必要があります。

      パラメーター:
      event - マルチキャストするイベント
      eventType - イベントの型 (null にすることができます)
      関連事項:
    • invokeListener

      protected void invokeListener(ApplicationListener<?> listener, ApplicationEvent event)
      指定されたイベントで指定されたリスナーを呼び出します。
      パラメーター:
      listener - 呼び出す ApplicationListener
      event - 伝播する現在のイベント
      導入:
      4.1