@Transactional 回滚在 Spring Boot 中不起作用

@Transactional rollback not working in SpringBoot

我有一个调用两个函数的 @Component 层。 我将我的第二个函数强制为 return 异常,但第一个事务没有回滚。 此服务层用 @Transactional

注释
@Transactional
class {

void updateMessageResult() {
    Message updatedMessage = messageService.updateResult(message, messageQueueDto);
    messagePublisher.publishEvent(updatedMessage);
 }
}

publishEvent中强制抛出RuntimeException

public void publishEvent()  {
throw new RuntimeException();
}

更新:我尝试了建议,但仍然无法回滚

您是否在您的项目中启用了事务管理?

例如,使用 @EnableTransactionManagement

注释您的配置 class

还有一件事:默认情况下,@Transactional 的事务回滚仅适用于 RuntimeException(或其子class)。确保你抛出的异常是 RuntimeException

在您想要事务的方法级别使用@Transactional 注释。它应该有效。

很抱歉张贴了错误的代码。我只是输入代码而不是复制粘贴它。

答案是我忘记为方法添加访问器(或public)。

如果不指定Java中方法的访问器,则默认访问器为default。

谢谢!