クラス SimpleApplicationEventMulticaster
- 実装されたすべてのインターフェース:
Aware
、BeanClassLoaderAware
、BeanFactoryAware
、ApplicationEventMulticaster
ApplicationEventMulticaster
インターフェースの単純な実装。 登録されたすべてのリスナーにすべてのイベントをマルチキャストします。関心のないイベントを無視するのはリスナーに任せます。リスナーは通常、渡されたイベントオブジェクトに対して対応する instanceof
チェックを実行します。
デフォルトでは、すべてのリスナーは呼び出しスレッドで呼び出されます。これにより、不正なリスナーがアプリケーション全体をブロックする危険性はなくなりますが、オーバーヘッドは最小限に抑えられます。別のタスクエグゼキュータを指定して、たとえばスレッドプールからなど、さまざまなスレッドでリスナーを実行します。
- 作成者:
- Rod Johnson, Juergen Hoeller, Stephane Nicoll, Brian Clozel
- 関連事項:
コンストラクターのサマリー
コンストラクターコンストラクター説明新しい SimpleApplicationEventMulticaster を作成します。SimpleApplicationEventMulticaster
(BeanFactory beanFactory) 指定された BeanFactory の新しい SimpleApplicationEventMulticaster を作成します。メソッドのサマリー
修飾子と型メソッド説明protected ErrorHandler
このマルチキャスターの現在のエラーハンドラーを返します。protected ExecutorSE
このマルチキャスターの現在のタスク実行プログラムを返します。protected void
invokeListener
(ApplicationListener<?> listener, ApplicationEvent event) 指定されたイベントで指定されたリスナーを呼び出します。void
multicastEvent
(ApplicationEvent event) 指定されたアプリケーションイベントを適切なリスナーにマルチキャストします。void
multicastEvent
(ApplicationEvent event, ResolvableType eventType) 指定されたアプリケーションイベントを適切なリスナーにマルチキャストします。void
setErrorHandler
(ErrorHandler errorHandler) リスナーから例外がスローされた場合に呼び出されるようにErrorHandler
を設定します。void
setTaskExecutor
(ExecutorSE taskExecutor) 各リスナーを呼び出すカスタムエグゼキューター(通常はTaskExecutor
)を設定します。クラス org.springframework.context.event.AbstractApplicationEventMulticaster から継承されたメソッド
addApplicationListener, addApplicationListenerBean, getApplicationListeners, getApplicationListeners, removeAllListeners, removeApplicationListener, removeApplicationListenerBean, removeApplicationListenerBeans, removeApplicationListeners, setBeanClassLoader, setBeanFactory, supportsEvent, supportsEvent
コンストラクターの詳細
SimpleApplicationEventMulticaster
public SimpleApplicationEventMulticaster()新しい SimpleApplicationEventMulticaster を作成します。SimpleApplicationEventMulticaster
指定された BeanFactory の新しい SimpleApplicationEventMulticaster を作成します。
メソッドの詳細
setTaskExecutor
各リスナーを呼び出すカスタムエグゼキューター(通常はTaskExecutor
)を設定します。デフォルトは
SyncTaskExecutor
と同じで、すべてのリスナーを呼び出しスレッドで同期的に実行します。すべてのリスナーが実行されるまで呼び出し元をブロックしないように、ここで非同期タスクエグゼキューターを指定することを検討してください。ただし、TaskExecutor がこれを明示的にサポートしない限り、非同期実行は呼び出し元のスレッドコンテキスト (クラスローダー、トランザクションコンテキスト) に参加しないことに注意してください。
非同期実行のサポートを宣言しない
ApplicationListener
インスタンス (ApplicationListener.supportsAsyncExecution()
) は、常にイベントを発行した元のスレッド内で実行されます (たとえば、トランザクション同期TransactionalApplicationListener
)。- 導入:
- 2.0
- 関連事項:
getTaskExecutor
このマルチキャスターの現在のタスク実行プログラムを返します。- 導入:
- 2.0
setErrorHandler
リスナーから例外がスローされた場合に呼び出されるようにErrorHandler
を設定します。デフォルトは none で、リスナー例外は現在のマルチキャストを停止し、現在のイベントのパブリッシャーに伝搬されます。タスクエグゼキューターが指定されている場合、個々のリスナー例外はエグゼキューターに伝達されますが、必ずしも他のリスナーの実行を停止するわけではありません。
例外をキャッチしてログに記録する
ErrorHandler
実装 (TaskUtils.LOG_AND_SUPPRESS_ERROR_HANDLER
など)、または例外をログに記録しながらも伝播する実装 (TaskUtils.LOG_AND_PROPAGATE_ERROR_HANDLER
など) を設定することを検討してください。- 導入:
- 4.1
getErrorHandler
このマルチキャスターの現在のエラーハンドラーを返します。- 導入:
- 4.1
multicastEvent
インターフェースからコピーされた説明:ApplicationEventMulticaster
指定されたアプリケーションイベントを適切なリスナーにマルチキャストします。ジェネリクスベースのイベントのサポートが向上するため、可能であれば
ApplicationEventMulticaster.multicastEvent(ApplicationEvent, ResolvableType)
の使用を検討してください。一致する
ApplicationListener
が非同期実行をサポートしていない場合は、このマルチキャスト呼び出しの呼び出しスレッド内で実行する必要があります。- パラメーター:
event
- マルチキャストするイベント- 関連事項:
multicastEvent
インターフェースからコピーされた説明:ApplicationEventMulticaster
指定されたアプリケーションイベントを適切なリスナーにマルチキャストします。eventType
がnull
の場合、デフォルトの型はevent
インスタンスに基づいて構築されます。一致する
ApplicationListener
が非同期実行をサポートしていない場合は、このマルチキャスト呼び出しの呼び出しスレッド内で実行する必要があります。- パラメーター:
event
- マルチキャストするイベントeventType
- イベントの型 (null
にすることができます)- 関連事項:
invokeListener
指定されたイベントで指定されたリスナーを呼び出します。- パラメーター:
listener
- 呼び出す ApplicationListenerevent
- 伝播する現在のイベント- 導入:
- 4.1