问题:
Spring的事务管理默认情况下是,抛出运行期异常时,事务是进行回滚的,但是我在异常抛出的service方法里把异常catch住,然后再去测试,就发现事务不进行回滚了,哪位大牛帮忙解答一下呀,呵呵,谢谢。代码截图如下:业务代码:
测试代码:
Spring事务管理异常

解决方案 »

  1.   

    spring事务管理是默认的吗?
    我记得得用AOP
      

  2.   

    汗我描述的不是很清楚,我的意思是,使用注解的方式@Transactionnal时,默认是:抛出运行期异常时,事务是进行回滚的,但是我在异常抛出的service方法里把异常catch住,然后再去测试,就发现事务不进行回滚了。
      

  3.   

    汗我描述的不是很清楚,我的意思是,使用注解的方式@Transactionnal时,默认是:抛出运行期异常时,事务是进行回滚的,但是我在异常抛出的service方法里把异常catch住,然后再去测试,就发现事务不进行回滚了。
    事务的回滚一般是异常上抛,上抛到spring配置的监听异常的那一级捕获到了异常然后spring进行回滚处理。
    你这里catch了异常,那么异常还会上抛么,你可以做个实验试试,看看上层是否会捕获到异常。
      

  4.   

    汗我描述的不是很清楚,我的意思是,使用注解的方式@Transactionnal时,默认是:抛出运行期异常时,事务是进行回滚的,但是我在异常抛出的service方法里把异常catch住,然后再去测试,就发现事务不进行回滚了。
    事务的回滚一般是异常上抛,上抛到spring配置的监听异常的那一级捕获到了异常然后spring进行回滚处理。
    你这里catch了异常,那么异常还会上抛么,你可以做个实验试试,看看上层是否会捕获到异常。你都已经把异常给解决了,以上没有往上抛,spring接收不到这个异常他还try毛啊
      

  5.   

    你都把异常拦住了,spring怎么知道发生了异常需要回滚?
      

  6.   

    汗我描述的不是很清楚,我的意思是,使用注解的方式@Transactionnal时,默认是:抛出运行期异常时,事务是进行回滚的,但是我在异常抛出的service方法里把异常catch住,然后再去测试,就发现事务不进行回滚了。
    事务的回滚一般是异常上抛,上抛到spring配置的监听异常的那一级捕获到了异常然后spring进行回滚处理。
    你这里catch了异常,那么异常还会上抛么,你可以做个实验试试,看看上层是否会捕获到异常。
    多谢