インターフェース ApplicationEventPublisher
- すべての既知のサブインターフェース:
ApplicationContext
、ConfigurableApplicationContext
、ConfigurableWebApplicationContext
、WebApplicationContext
- すべての既知の実装クラス:
AbstractApplicationContext
、AbstractRefreshableApplicationContext
、AbstractRefreshableConfigApplicationContext
、AbstractRefreshableWebApplicationContext
、AbstractXmlApplicationContext
、AnnotationConfigApplicationContext
、AnnotationConfigWebApplicationContext
、ClassPathXmlApplicationContext
、FileSystemXmlApplicationContext
、GenericApplicationContext
、GenericGroovyApplicationContext
、GenericWebApplicationContext
、GenericXmlApplicationContext
、GroovyWebApplicationContext
、StaticApplicationContext
、StaticWebApplicationContext
、XmlWebApplicationContext
- 関数インターフェース:
- これは関数インターフェースであるため、ラムダ式またはメソッド参照の割り当てターゲットとして使用できます。
ApplicationContext
のスーパーインターフェースとして機能します。
- 導入:
- 1.1.1
- 作成者:
- Juergen Hoeller, Stephane Nicoll
- 関連事項:
方法の概要
修飾子と型メソッド説明void
publishEvent
(ObjectSE event) このアプリケーションに登録されているすべての一致するリスナーにイベントを通知します。default void
publishEvent
(ApplicationEvent event) このアプリケーションに登録されているすべての一致するリスナーにアプリケーションイベントを通知します。
メソッドの詳細
publishEvent
このアプリケーションに登録されているすべての一致するリスナーにアプリケーションイベントを通知します。イベントは、フレームワークイベント(ContextRefreshedEvent など)またはアプリケーション固有のイベントです。このようなイベント発行ステップは、事実上、マルチキャスターへのハンドオフであり、同期 / 非同期の実行や、即時の実行さえも意味していません。イベントリスナーは可能な限り効率的であることが推奨され、非同期実行を使用して、実行時間を長くし、操作をブロックする可能性があります。
リアクティブコールスタックで使用する場合は、単純なハンドオフとしてイベントパブリケーションを含めます:
Mono.fromRunnable(() -> eventPublisher.publishEvent(...))
。他の非同期実行と同様に、スレッドローカルデータはリアクティブリスナーメソッドでは使用できません。イベントの処理に必要なすべての状態は、イベントインスタンス自体に含まれる必要があります。現在のトランザクションコンテキストをリアクティブハンドオフに簡単に含めるために、
TransactionalEventPublisher.publishEvent(Function)
の使用を検討してください。スレッドバインドされたトランザクションの場合、状態はスレッドローカルストレージを通じて暗黙的に利用可能になるため、これは必要ありません。- パラメーター:
event
- 公開するイベント- 関連事項:
publishEvent
このアプリケーションに登録されているすべての一致するリスナーにイベントを通知します。指定された
event
がApplicationEvent
ではない場合、PayloadApplicationEvent
にラップされます。このようなイベント発行ステップは、事実上、マルチキャスターへのハンドオフであり、同期 / 非同期の実行や、即時の実行さえも意味していません。イベントリスナーは可能な限り効率的であることが推奨され、非同期実行を使用して、実行時間を長くし、操作をブロックする可能性があります。
現在のトランザクションコンテキストをリアクティブハンドオフに簡単に含めるために、
TransactionalEventPublisher.publishEvent(Object)
の使用を検討してください。スレッドバインドされたトランザクションの場合、状態はスレッドローカルストレージを通じて暗黙的に利用可能になるため、これは必要ありません。- パラメーター:
event
- 公開するイベント- 導入:
- 4.2
- 関連事項: