spring事务没回滚

      最近遇见一个问题,用spring管理实务,在service层处理数据,保存数据时出现异常,但没有回滚,检查了一下,发现是因为我用try catch将异常进行捕获了,没有抛出导致的;默认spring事务只在发生未被捕获的 runtimeexcetpion时才回滚。 

处理发法一:捕获异常后,新生成runtimeexcetpion;

  1. try {          
  2.         userDao.save(user);          
  3.         userDao.update(user);         
  4.        } catch (Exception e) {         
  5.         logger.info("异常信息:"+e);          
  6.         throw new RuntimeException();   
  7.           }     

 

 处理方法二:捕获异常后,添加TransactionAspectSupport.currentTransactionStatus().setRollbackOnly()手动回滚

  1. try {          
  2.         userDao.save(user);          
  3.        userDao.update(user);        
  4.     } catch (Exception e) {          
  5.         logger.info("异常信息:"+e);          
  6.         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();         
  7.     }  

处理方法三:不用try   catch进行捕获;出现异常的方法会被spring管理而进行回滚

         1.       userDao.save(user); 

         2.       userDao.update(user);

 

posted @ 2017-07-31 23:24  临飞  阅读(1516)  评论(1编辑  收藏  举报