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
就是您想要的属性。