@Transactional回滚在SpringBoot中不起作用

时间:2019-10-21 06:54:46

标签: java spring-boot spring-transactions

我有一个@Component层,它调用两个函数。 我强迫我的第二个函数返回一个异常,但它的第一个事务没有回滚。 此服务层带有@Transactional

注释
@Transactional
class {

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

publishEvent中,它被迫抛出RuntimeException

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

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

3 个答案:

答案 0 :(得分:1)

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

例如,使用 @EnableTransactionManagement

注释您的配置类

另一件事:默认情况下,使用@Transactional进行事务回滚仅适用于RuntimeException(或其子类)。确保您引发的异常是RuntimeException

答案 1 :(得分:0)

在要进行交易的方法级别上使用 @Transactional 批注。应该可以。

答案 2 :(得分:0)

对不起,您发布了错误的代码。我只是键入代码,而不是复制粘贴代码。

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

谢谢!