我的服务中有几个@Transactional
私有方法,由于不建议使用@Transactional
而不是私有方法,因此我使用org.springframework.transaction.support.TransactionTemplate
对其进行了修复。重构简单的@Transactional
很容易,但是我有一个具有rollbackFor
属性的事务处理方法,如下所示:
@Transactional(rollbackFor = ProcessingAlertException.class)
private void processAlert(Alert alert) {
// do something
}
我不确定如何重构它。 org.springframework.transaction.TransactionStatus
似乎没有合适的方法。
答案 0 :(得分:0)
由于您已决定使用TransactionTemplate
,因此可以在TransactionCallback
中为给定的异常类型调用TransactionStatus.setRollbackOnly()
:
transactionTemplate.execute(transactionStatus -> {
try {
...
} catch (ProcessingAlertException ex) {
transactionStatus.setRollbackOnly();
}
});