具有rollbackFor的TransactionTemplate

时间:2018-08-14 08:44:02

标签: java spring

我的服务中有几个@Transactional私有方法,由于不建议使用@Transactional而不是私有方法,因此我使用org.springframework.transaction.support.TransactionTemplate对其进行了修复。重构简单的@Transactional很容易,但是我有一个具有rollbackFor属性的事务处理方法,如下所示:

@Transactional(rollbackFor = ProcessingAlertException.class)
private void processAlert(Alert alert) {
    // do something
}

我不确定如何重构它。 org.springframework.transaction.TransactionStatus似乎没有合适的方法。

1 个答案:

答案 0 :(得分:0)

由于您已决定使用TransactionTemplate,因此可以在TransactionCallback中为给定的异常类型调用TransactionStatus.setRollbackOnly()

transactionTemplate.execute(transactionStatus -> {
    try {
      ...
    } catch (ProcessingAlertException ex) {
      transactionStatus.setRollbackOnly();
    }
});