美文网首页
spring Transactional 事务 回滚策略

spring Transactional 事务 回滚策略

作者: 会飞的小猪 | 来源:发表于2021-09-09 15:40 被阅读0次

    1、首先来看下rollbackFor = Exception.class的作用,看代码


    image.png

    只有加上rollbackfor=Exception.class才可以针对Exception异常进行回滚,否则只能对RuntimeException进行回滚。
    2、catch 住的异常还能否回滚?
    2.1 catch代码块里边声明了rollbackfor
    由于aop切面管理事务,异常发生后spring会捕获到异常,并进行回滚处理,
    2.2 catch代码块里边未声明rollbackfor
    我们都知道用try catch 包括的事务,如果该事务发生了异常,那么该事务不会回滚。那么怎么样才能做
    到让他可以回滚呢,看如下代码。


    image.png

    需要在catch里边抛出异常,一般来说需要抛出RuntimeException即可。
    总结,transaction默认是针对RuntimeException进行回滚,如果要想对Exception回顾进行回顾,则需要加上rollbackFor = Exception.class。对于catch住的异常,如果catch块里边有rollbackfor,则异常会自动回滚,否则需要new RuntimeException或者自定义异常抛出。

    相关文章

      网友评论

          本文标题:spring Transactional 事务 回滚策略

          本文链接:https://www.haomeiwen.com/subject/togiwltx.html