使用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();
        }
    }
});
posted @ 2018-12-20 15:29  沟渠映明月  阅读(11069)  评论(0编辑  收藏  举报