http://runxinzhi.com/c-Ajing-p-13448350.html
我们知道在平时的开发中,如果在事务方法中开发人员自己用try-catch处理了异常,那么spring aop就捕获不到异常信息,从而会导致spring不能对事务方法正确的进行管理,不能及时回滚错误信息。
下面用代码演示一下:
@Override@Transactional(rollbackFor=Exception.class)publicintdoSaveUser()throwsException{intresult=0;UserEntity u=newUserEntity();u.setUserSex("男");u.setUserName("AAA");try{result=userMapper.insertUser(u);inti=1/0;}catch(Exceptione){e.printStackTrace();}returnresult;}
数据库:
可以看到程序虽然报错了,但是事务并没有回滚,这就是由于我们自己处理了异常信息。
可是,只要是我们自己处理了异常,事务就一定不会回滚吗?答案是不一定的,下面用两段代码对比一下: