使用TransactionTemplate

通过TransactionCallback接口中的方法后(这里用来做业务),将返回值传递到TransactionTemplate的execute()中。通过调用TransactionStatus 的setRollbackOnly()方法来实现事物回滚。

如果不需要返回值,则需要做以下操作(由于TransactionCallbackWithoutResult是一个抽象类,该类的doInTransactionWithoutResult方法是一个抽象方法,故无法通过lambda进行编写):

transactionTemplate.execute(new TransactionCallbackWithoutResult() {

    protected void doInTransactionWithoutResult(TransactionStatus status) {
        try {
            updateOperation1();//业务代码
            updateOperation2();
        } catch (SomeBusinessException ex) {
            status.setRollbackOnly();
        }
    }
});
原文地址:https://www.cnblogs.com/gqymy/p/10149670.html