クラス 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 voidinvokeListener(ApplicationListener<?> listener, ApplicationEvent event) 指定されたイベントで指定されたリスナーを呼び出します。voidmulticastEvent(ApplicationEvent event) 指定されたアプリケーションイベントを適切なリスナーにマルチキャストします。voidmulticastEvent(ApplicationEvent event, ResolvableType eventType) 指定されたアプリケーションイベントを適切なリスナーにマルチキャストします。voidsetErrorHandler(ErrorHandler errorHandler) リスナーから例外がスローされた場合に呼び出されるようにErrorHandlerを設定します。voidsetTaskExecutor(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 が明示的にサポートしない限り、非同期実行は呼び出し元のスレッドコンテキスト(クラスローダー、トランザクションの関連付け)に参加しないことに注意してください。
getTaskExecutor
このマルチキャスターの現在のタスク実行プログラムを返します。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