@TargetSE(valueSE={METHODSE,ANNOTATION_TYPESE}) @RetentionSE(valueSE=RUNTIMESE) @DocumentedSE @EventListener public @interface TransactionalEventListener
TransactionPhase
に従って呼び出される EventListener
。 イベントが管理対象トランザクションの境界内で発行されない場合、fallbackExecution()
フラグが明示的に設定されていない限り、イベントは破棄されます。トランザクションが実行されている場合、イベントは TransactionPhase
に従って処理されます。
アノテーション付きメソッドに @Order
を追加すると、トランザクション完了の前または後に実行されている他のリスナーの中でそのリスナーに優先順位を付けることができます。
修飾子と型 | オプションの要素と説明 |
---|---|
ClassSE<?>[] | classes このリスナーが処理するイベントクラス。 |
StringSE | condition イベント処理を条件付きにするために使用される Spring 式言語(SpEL)属性。 |
boolean | fallbackExecution トランザクションが実行されていない場合にイベントを処理するかどうか。 |
TransactionPhase | phase イベントの処理をバインドするフェーズ。 |
ClassSE<?>[] | value classes() のエイリアス。 |
public abstract TransactionPhase phase
デフォルトのフェーズは TransactionPhase.AFTER_COMMIT
です。
トランザクションが進行中でない場合、fallbackExecution()
が明示的に有効にされていない限り、イベントはまったく処理されません。
public abstract boolean fallbackExecution
@AliasFor(annotation=EventListener.class, attribute="classes") public abstract ClassSE<?>[] value
classes()
のエイリアス。@AliasFor(annotation=EventListener.class, attribute="classes") public abstract ClassSE<?>[] classes
この属性が単一の値で指定されている場合、アノテーション付きメソッドはオプションで単一のパラメーターを受け入れることができます。ただし、この属性が複数の値で指定されている場合、アノテーション付きメソッドはパラメーターを宣言してはなりません。
public abstract StringSE condition
デフォルトは ""
です。つまり、イベントは常に処理されます。