クラス 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 がこれを明示的にサポートしない限り、非同期実行は呼び出し元のスレッドコンテキスト (クラスローダー、トランザクションコンテキスト) に参加しないことに注意してください。
- 導入:
- 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)
の使用を検討してください。- パラメーター:
event
- マルチキャストするイベント
multicastEvent
インターフェースからコピーされた説明:ApplicationEventMulticaster
指定されたアプリケーションイベントを適切なリスナーにマルチキャストします。eventType
がnull
の場合、デフォルトの型はevent
インスタンスに基づいて構築されます。- パラメーター:
event
- マルチキャストするイベントeventType
- イベントの型 (null
にすることができます)
invokeListener
指定されたイベントで指定されたリスナーを呼び出します。- パラメーター:
listener
- 呼び出す ApplicationListenerevent
- 伝播する現在のイベント- 導入:
- 4.1