- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用@TransactionalEventListener
来接收回滚事件后,但是@TransactionalEventListener
似乎可以接收事务方法中的所有事件。
听众:
@Slf4j
@Component
public class TransactionListener {
@TransactionalEventListener(phase = TransactionPhase.AFTER_ROLLBACK,classes = TransactionEvent.class)
public void onEventHandler(TransactionEvent event) {
log.info("after rollback. event = {}", event);
}
}
测试:
@SpringBootTest
@RunWith(SpringRunner.class)
@Slf4j
public class TaskAutoRepoTest {
@Autowired
private ApplicationEventPublisher publisher;
@Test
public void saveTest() throws InterruptedException {
publisher.publishEvent(new TransactionEvent("name", "sssssss"));
Thread.sleep(1000);
}
}
运行测试时TransactionListener
始终接收事件并打印日志。
最佳答案
请考虑共享其他人可以运行的实际示例,而不是在文本中粘贴代码。如果您有 GitHub 帐户,则可以非常轻松地创建存储库并将这些内容复制/粘贴到从 start.spring.io 创建的小项目中。
我已经做到了,它按预期工作,请参阅 https://github.com/snicoll-scratches/test-so-58552671
请注意,我保留了 Thread.sleep 部分,但如果事务已在该方法的边界之外启动,则您不应该这样做,因为 sleep 将阻止事务完成。
无论如何,上面的代码与您声称的不符,所以一定发生了其他事情。如果您仍然可以重现该问题,您可以查看示例项目并向其发送包含更改的 PR。
编辑:感谢您为我的原始示例提供 PR。您的设置根本不使用事务管理(没有事务支持,没有 Activity 的事务管理器)。 TransactionalEventListener
是一个 EventListener
,因此事件将按原样传递。我已将 @EnableTransactionManagement
添加到您的 PR 中,随着交易基础设施就位,一切都按预期进行。
关于java - TransactionalEventListener 是否总是接收事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58552671/
我正在尝试使用 @TransactionalEventListener 监听事件,但即使在整个事务结束之前该事件也会被监听。即使该方法抛出异常,也会监听该事件。 这是我正在尝试做的示例代码 @Comp
我想使用@TransactionalEventListener来接收回滚事件后,但是@TransactionalEventListener似乎可以接收事务方法中的所有事件。 听众: @Slf4j @C
我有一个服务和两个具有 BEFORE_COMMIT 阶段的 TransactionalEventListeners,一个监听 EventA,另一个监听 EventB。服务发布 EventA -> Ev
我正在从事 spring boot 应用程序的事件驱动设计。 代码由以下文件组成: Spring boot:ApplicationEvent 文件,即 MyBusinessEvent.{java @D
基于一篇文章,Better application events in Spring Framework 4.2 ,我设置了所有相关的类。我的大部分代码都可以正常工作,但在监听器的方法中出现异常。 C
我想在 TransactionPhase.AFTER_COMPLETION 之后但在 Async 模式下做一些事情。问题是在当前的实现中,它以同步模式运行,我怎样才能使它异步? @Transactio
我有一个奇怪的问题,涉及 @TransactionalEventListener 无法正确触发或在由另一个 @TransactionalEventListener 触发时出现预期行为。 一般流程是:
我是一名优秀的程序员,十分优秀!