@Target(value={METHOD,ANNOTATION_TYPE})
@Retention(value=RUNTIME)
@Documented
@EventListener
public @interface TransactionalEventListener
EventListener that is invoked according to a TransactionPhase.
If the event is not published within the boundaries of a managed transaction, the
event is discarded unless the fallbackExecution() flag is explicitly set. If a
transaction is running, the event is processed according to its TransactionPhase.
Adding @Order to your annotated
method allows you to prioritize that listener amongst other listeners running before
or after transaction completion.
| Modifier and Type | Optional Element and Description |
|---|---|
java.lang.Class<?>[] |
classes
The event classes that this listener handles.
|
java.lang.String |
condition
Spring Expression Language (SpEL) attribute used for making the event
handling conditional.
|
boolean |
fallbackExecution
Whether the event should be processed if no transaction is running.
|
TransactionPhase |
phase
Phase to bind the handling of an event to.
|
java.lang.Class<?>[] |
value
Alias for
classes(). |
public abstract TransactionPhase phase
The default phase is TransactionPhase.AFTER_COMMIT.
If no transaction is in progress, the event is not processed at
all unless fallbackExecution() has been enabled explicitly.
public abstract boolean fallbackExecution
@AliasFor(annotation=org.springframework.context.event.EventListener.class,
attribute="classes")
public abstract java.lang.Class<?>[] value
classes().@AliasFor(annotation=org.springframework.context.event.EventListener.class,
attribute="classes")
public abstract java.lang.Class<?>[] classes
If this attribute is specified with a single value, the annotated method may optionally accept a single parameter. However, if this attribute is specified with multiple values, the annotated method must not declare any parameters.