第一种:
// 开启事务管理
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = txManager.getTransaction(def);
try {
if (false) {
throw new RuntimeException("抛出自定义异常");
}
}
} catch (Exception ex) {
txManager.rollback(status);
logger.error("系统内部错误", ex);
return ResponseUtil.fail(403, "下单失败");
}
txManager.commit(status);
第二种:
开启事务支持
@EnableTransactionManagement
需要事务的类上增加注解
@Transactional(propagation= Propagation.REQUIRED,rollbackFor = Exception.class)
try {
if (false){
throw new Exception("系统配置错误");
}
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.error("签到失败 " + e.getMessage());
map.put("toDay",false);
return map;
}
因为catch了所有事物不会回滚,所以需要增加
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();