インターフェース ApplicationEventPublisher

すべての既知のサブインターフェース:
ApplicationContextConfigurableApplicationContextConfigurableWebApplicationContextWebApplicationContext
すべての既知の実装クラス:
AbstractApplicationContextAbstractRefreshableApplicationContextAbstractRefreshableConfigApplicationContextAbstractRefreshableWebApplicationContextAbstractXmlApplicationContextAnnotationConfigApplicationContextAnnotationConfigWebApplicationContextClassPathXmlApplicationContextFileSystemXmlApplicationContextGenericApplicationContextGenericGroovyApplicationContextGenericWebApplicationContextGenericXmlApplicationContextGroovyWebApplicationContextStaticApplicationContextStaticWebApplicationContextXmlWebApplicationContext
関数インターフェース:
これは関数インターフェースであるため、ラムダ式またはメソッド参照の割り当てターゲットとして使用できます。

@FunctionalInterfaceSE public interface ApplicationEventPublisher
イベント発行機能をカプセル化するインターフェース。

ApplicationContext のスーパーインターフェースとして機能します。

導入:
1.1.1
作成者:
Juergen Hoeller, Stephane Nicoll
関連事項:
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    このアプリケーションに登録されているすべての一致するリスナーにイベントを通知します。
    default void
    このアプリケーションに登録されているすべての一致するリスナーにアプリケーションイベントを通知します。
  • メソッドの詳細

    • publishEvent

      default void publishEvent(ApplicationEvent event)
      このアプリケーションに登録されているすべての一致するリスナーにアプリケーションイベントを通知します。イベントは、フレームワークイベント(ContextRefreshedEvent など)またはアプリケーション固有のイベントです。

      このようなイベント発行ステップは、事実上、マルチキャスターへのハンドオフであり、同期 / 非同期の実行や、即時の実行さえも意味していません。イベントリスナーは可能な限り効率的であることが推奨され、非同期実行を使用して、実行時間を長くし、操作をブロックする可能性があります。

      リアクティブコールスタックで使用する場合は、単純なハンドオフとしてイベントパブリケーションを含めます: Mono.fromRunnable(() -> eventPublisher.publishEvent(...))。他の非同期実行と同様に、スレッドローカルデータはリアクティブリスナーメソッドでは使用できません。イベントの処理に必要なすべての状態は、イベントインスタンス自体に含まれる必要があります。

      現在のトランザクションコンテキストをリアクティブハンドオフに簡単に含めるために、TransactionalEventPublisher.publishEvent(Function) の使用を検討してください。スレッドバインドされたトランザクションの場合、状態はスレッドローカルストレージを通じて暗黙的に利用可能になるため、これは必要ありません。

      パラメーター:
      event - 公開するイベント
      関連事項:
    • publishEvent

      void publishEvent(ObjectSE event)
      このアプリケーションに登録されているすべての一致するリスナーにイベントを通知します。

      指定された event が ApplicationEvent ではない場合、PayloadApplicationEvent にラップされます。

      このようなイベント発行ステップは、事実上、マルチキャスターへのハンドオフであり、同期 / 非同期の実行や、即時の実行さえも意味していません。イベントリスナーは可能な限り効率的であることが推奨され、非同期実行を使用して、実行時間を長くし、操作をブロックする可能性があります。

      現在のトランザクションコンテキストをリアクティブハンドオフに簡単に含めるために、TransactionalEventPublisher.publishEvent(Object) の使用を検討してください。スレッドバインドされたトランザクションの場合、状態はスレッドローカルストレージを通じて暗黙的に利用可能になるため、これは必要ありません。

      パラメーター:
      event - 公開するイベント
      導入:
      4.2
      関連事項: