アノテーションインターフェース TransactionalEventListener
TransactionPhase
に従って呼び出される EventListener
。これは、TransactionalApplicationListener
と同等のアノテーションベースです。 イベントがアクティブなトランザクション内で公開されていない場合、fallbackExecution()
フラグが明示的に設定されていない限り、イベントは破棄されます。トランザクションが実行されている場合、イベントはその TransactionPhase
に従って処理されます。
アノテーション付きメソッドに @Order
を追加すると、トランザクション完了の前または後に実行されている他のリスナーの中でそのリスナーに優先順位を付けることができます。
注: トランザクションイベントリスナーは、PlatformTransactionManager
によって管理されるスレッドバウンドトランザクションでのみ機能します。ReactiveTransactionManager
によって管理されるリアクティブトランザクションは、スレッドローカル変数の代わりに Reactor コンテキストを使用するため、イベントリスナーの観点からは、参加できる互換性のあるアクティブトランザクションはありません。
警告 : TransactionPhase
が AFTER_COMMIT
(デフォルト)、AFTER_ROLLBACK
、AFTER_COMPLETION
に設定されている場合、トランザクションはすでにコミットまたはロールバックされていますが、トランザクションリソースは引き続きアクティブでアクセス可能である可能性があります。結果として、この時点でトリガーされたデータアクセスコードは元のトランザクションに「参加」しますが、変更はトランザクションリソースにコミットされません。詳細については、TransactionSynchronization.afterCompletion(int)
を参照してください。
- 導入:
- 4.2
- 作成者:
- Stephane Nicoll, Sam Brannen, Oliver Drotbohm
- 関連事項:
要素の詳細
phase
TransactionPhase phaseイベントの処理をバインドするフェーズ。デフォルトのフェーズは
TransactionPhase.AFTER_COMMIT
です。トランザクションが進行中でない場合、
fallbackExecution()
が明示的に有効にされていない限り、イベントはまったく処理されません。- デフォルト:
- AFTER_COMMIT
fallbackExecution
boolean fallbackExecutionトランザクションが実行されていない場合にイベントを処理する必要があるかどうか。- デフォルト:
- false
value
classes()
のエイリアス。- デフォルト:
- {}
classes
このリスナーが処理するイベントクラス。この属性が単一の値で指定されている場合、アノテーション付きメソッドはオプションで単一のパラメーターを受け入れることができます。ただし、この属性が複数の値で指定されている場合、アノテーション付きメソッドはパラメーターを宣言してはなりません。
- デフォルト:
- {}
condition
イベント処理を条件付きにするために使用される Spring 式言語(SpEL)属性。デフォルトは
""
です。つまり、イベントは常に処理されます。- デフォルト:
- ""
id
リスナーのオプションの識別子。デフォルトでは、宣言メソッドの完全修飾署名("mypackage.MyClass.myMethod()" など)になります。- デフォルト:
- ""