在代码中间手动管理事务
设置回滚点
//手动事务
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
TransactionStatus status = transactionManager.getTransaction(def);根据逻辑手动选择回滚操作
synchroniseResponseDto.setMessage("同步成功");
synchroniseResponseDtoList.add(synchroniseResponseDto);
transactionManager.commit(status);
}catch(Exception e) {
synchroniseResponseDto.setMessage(message);
synchroniseResponseDto.setSuccess(false);
synchroniseResponseDtoList.add(synchroniseResponseDto);
transactionManager.rollback(status);
}
有另一种简单点的方式:
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
这会让当前的事务被设置为回滚标记,简单但是没有上面的方法灵活