首页 > 解决方案 > 如何使用事务注释捕获错误?

问题描述

我使用弹簧靴 2.2。

在具有事务性注释的方法中,当我通过存储库保存时,如果没有错误,我想用 rabbit mq 发送一条消息。

如何确保存储库没有错误?

@Transactional
public void save(CreditEvent creditEvent) {
    repository.save(creditEvent);
    //no error send message
}

如果发送消息时出现错误,我不想回滚保存操作。

标签: springspring-bootspring-transactions

解决方案


虽然它是 Transactional 和 JPA,但它仍然是一个 java 方法,如果保存失败,则会抛出未经检查的DataAccessException异常,并且流将不会继续发送消息。

class 是一个运行时异常,如果任何错误被认为是致命的(通常情况下),则不需要用户代码来捕获它或子类。


推荐阅读