Java 具有rollbackFor的TransactionTemplate

Java 具有rollbackFor的TransactionTemplate,java,spring,Java,Spring,我的服务中有几个@Transactional私有方法,由于@Transactional不推荐使用私有方法,我使用org.springframework.transaction.support.TransactionTemplate修复了它们。重构简单的@Transactional很容易,但我有一个带有rollboor属性的事务方法,如下所示: @Transactional(rollbackFor = ProcessingAlertException.class) private void pro

我的服务中有几个
@Transactional
私有方法,由于
@Transactional
不推荐使用私有方法,我使用
org.springframework.transaction.support.TransactionTemplate
修复了它们。重构简单的
@Transactional
很容易,但我有一个带有
rollboor
属性的事务方法,如下所示:

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

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

既然您已经决定使用
TransactionTemplate
,您只需在
TransactionCallback中调用给定的异常类型即可:

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

创建一个单独的
TransactionTemplate
使用事务管理器和自定义
TransactionDefinition
构建它。
RuleBasedTransactionAttribute
就是您想要的属性。