此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Framework 6.1.10! |
此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Framework 6.1.10! |
从 Spring 4.2 开始,事件的侦听器可以绑定到事务的某个阶段。 典型的示例是在事务成功完成时处理事件。 这样做可以更灵活地使用事件,当当前的结果 事务实际上对听众很重要。
您可以使用注释注册常规事件侦听器。
如果需要将其绑定到事务,请使用 .
执行此操作时,默认情况下,侦听器将绑定到事务的提交阶段。@EventListener
@TransactionalEventListener
下一个示例演示了此概念。假设组件发布订单创建 事件,并且我们想要定义一个侦听器,该侦听器应该只处理该事件一次 已发布的事务已成功提交。以下 示例设置这样的事件侦听器:
-
Java
-
Kotlin
@Component
public class MyComponent {
@TransactionalEventListener
public void handleOrderCreatedEvent(CreationEvent<Order> creationEvent) {
// ...
}
}
@Component
class MyComponent {
@TransactionalEventListener
fun handleOrderCreatedEvent(creationEvent: CreationEvent<Order>) {
// ...
}
}
注释公开了一个属性,该属性允许您
自定义侦听器应绑定到的事务阶段。
有效的阶段是 、(默认)、以及聚合事务完成(无论是提交还是回滚)的阶段。@TransactionalEventListener
phase
BEFORE_COMMIT
AFTER_COMMIT
AFTER_ROLLBACK
AFTER_COMPLETION
如果没有事务正在运行,则根本不会调用侦听器,因为我们无法遵循
必需的语义。但是,您可以通过将批注的属性设置为 来覆盖该行为。fallbackExecution
true
|
|