spring事务没回滚
最近遇见一个问题,用spring管理实务,在service层处理数据,保存数据时出现异常,但没有回滚,检查了一下,发现是因为我用try catch将异常进行捕获了,没有抛出导致的;默认spring事务只在发生未被捕获的 runtimeexcetpion时才回滚。
处理发法一:捕获异常后,新生成runtimeexcetpion;
- try {
- userDao.save(user);
- userDao.update(user);
- } catch (Exception e) {
- logger.info("异常信息:"+e);
- throw new RuntimeException();
- }
处理方法二:捕获异常后,添加TransactionAspectSupport.currentTransactionStatus().setRollbackOnly()手动回滚
- try {
- userDao.save(user);
- userDao.update(user);
- } catch (Exception e) {
- logger.info("异常信息:"+e);
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- }
处理方法三:不用try catch进行捕获;出现异常的方法会被spring管理而进行回滚
1. userDao.save(user);
2. userDao.update(user);