public class SimpleApplicationEventMulticaster extends AbstractApplicationEventMulticaster
ApplicationEventMulticaster
インターフェースの単純な実装。 登録されたすべてのリスナーにすべてのイベントをマルチキャストします。関心のないイベントを無視するのはリスナーに任せます。リスナーは通常、渡されたイベントオブジェクトに対して対応する instanceof
チェックを実行します。
デフォルトでは、すべてのリスナーは呼び出しスレッドで呼び出されます。これにより、不正なリスナーがアプリケーション全体をブロックする危険性はなくなりますが、オーバーヘッドは最小限に抑えられます。別のタスクエグゼキュータを指定して、たとえばスレッドプールからなど、さまざまなスレッドでリスナーを実行します。
setTaskExecutor(java.util.concurrent.Executor)
コンストラクターと説明 |
---|
SimpleApplicationEventMulticaster() 新しい SimpleApplicationEventMulticaster を作成します。 |
SimpleApplicationEventMulticaster(BeanFactory beanFactory) 指定された BeanFactory の新しい SimpleApplicationEventMulticaster を作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
protected ErrorHandler | getErrorHandler() このマルチキャスターの現在のエラーハンドラーを返します。 |
protected ExecutorSE | getTaskExecutor() このマルチキャスターの現在のタスク実行プログラムを返します。 |
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 )を設定します。 |
addApplicationListener, addApplicationListenerBean, getApplicationListeners, getApplicationListeners, removeAllListeners, removeApplicationListener, removeApplicationListenerBean, setBeanClassLoader, setBeanFactory, supportsEvent, supportsEvent
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public SimpleApplicationEventMulticaster()
public SimpleApplicationEventMulticaster(BeanFactory beanFactory)
public void setTaskExecutor(@Nullable ExecutorSE taskExecutor)
TaskExecutor
)を設定します。 デフォルトは SyncTaskExecutor
と同じで、すべてのリスナーを呼び出しスレッドで同期的に実行します。
ここで非同期タスクエグゼキューターを指定して、すべてのリスナーが実行されるまで呼び出し元をブロックしないことを検討してください。ただし、TaskExecutor が明示的にサポートしない限り、非同期実行は呼び出し元のスレッドコンテキスト(クラスローダー、トランザクションの関連付け)に参加しないことに注意してください。
@Nullable protected ExecutorSE getTaskExecutor()
public void setErrorHandler(@Nullable ErrorHandler errorHandler)
ErrorHandler
を設定します。デフォルトは none で、リスナー例外は現在のマルチキャストを停止し、現在のイベントのパブリッシャーに伝搬されます。タスクエグゼキューターが指定されている場合、個々のリスナー例外はエグゼキューターに伝達されますが、必ずしも他のリスナーの実行を停止するわけではありません。
例外をキャッチしてログに記録する ErrorHandler
実装(TaskUtils.LOG_AND_SUPPRESS_ERROR_HANDLER
のように)または例外をログに記録しながら実装する(TaskUtils.LOG_AND_PROPAGATE_ERROR_HANDLER
など)設定を検討してください。
@Nullable protected ErrorHandler getErrorHandler()
public void multicastEvent(ApplicationEvent event)
ApplicationEventMulticaster
ジェネリクスベースのイベントのサポートが向上するため、可能であれば ApplicationEventMulticaster.multicastEvent(ApplicationEvent, ResolvableType)
の使用を検討してください。
event
- マルチキャストするイベント public void multicastEvent(ApplicationEvent event, @Nullable ResolvableType eventType)
ApplicationEventMulticaster
eventType
が null
の場合、デフォルトの型は event
インスタンスに基づいて構築されます。
event
- マルチキャストするイベント eventType
- イベントの型 (null でもかまいません)protected void invokeListener(ApplicationListener<?> listener, ApplicationEvent event)
listener
- 呼び出す ApplicationListenerevent
- 伝播する現在のイベント