spring事务的传播

1.spring事务的传播

  1. 为什么会有传播机制

    1. spring对事务的控制,是使用aop切面实现的

    2. 场景一:A调用B,都有事务,B异常,让B提交还是两个一起回滚

    3. 场景二:A调用B,A有事务,是够让B加入事务控制,B异常,A是否回滚

    4. 场景三:A调用B,都有事务,B执行完成,A有异常,B是否回滚

  2. 传播机制的生效条件

    1. 由于spring是使用aop来代理事务控制的,是针对于接口或类的,所以在同一个service类中两个方法调用,传播机制是不生效的

  3. 事务传播的类型

    1. REQUIRED(默认)

      1. 支持当前事务,如果当前没有事务,则新建事务

      2. 如果当前存在事务,则加入当前事务,合并成一个事务

      3. 子事务回滚,父事务一定回滚;父事务回滚,子事务一定回滚

    2. REQUIRES_NEW

      1. 新建事务,如果当前存在事务,则把当前事务挂起

      2. 这个方法会独立提交事务,不受调用者的事务影响,父级异常,它也会正常提交

    3. NESTED

      1. 如果当前存在事务,它将会成为父级事务的一个子事务,方法结束后并没有提交,只有等父事务结束才提交

      2. 如果当前没有事务,则新建事务

      3. 如果它异常,父级可以捕获它的异常而不进行回滚,正常提交

      4. 但如果父级异常,它必然回滚,这就是和REQUIRES_NEW的区别

    4. NOT_SUPPORTED

      1. 以非事务方式运行

      2. 如果当前存在事务,则把当前事务挂起 

    5. MANDATORY

      1. 如果当前存在事务,则运行在当前事务中

      2. 如果当前无事务,则抛出异常,即父级方法必须要有事务

    6. NEVER

      1. 以非事务方式运行,如果当前存在事务,则抛出异常,即父级方法必须无事务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值