实际项目中要实现spring的事务大多数我们都是使用 @Transactional(rollbackFor = Exception.class) 注解即可,但是有些业务场景需要我们手动处理事务我们就可以这样:
//开启事务
DefaultTransactionDefinition defaultTransactionDefinition = new DefaultTransactionDefinition();
// 嵌套事务
defaultTransactionDefinition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
// 设置嵌套事务
TransactionStatus status = transactionManager.getTransaction(defaultTransactionDefinition);
try {
// TODO 处理我们的业务逻辑代码......
// 没有异常便手动提交事务
transactionManager.commit(status);
} catch (Exception e) {
log.error("save error:", e);
// 有异常便回滚事务
transactionManager.rollback(status);
}