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