spring 事务传播机制

spring 对事务的控制,是使用 aop 切面实现的, 使用@Transactional 注解完成

注解类型:

 

1@Transactional(propagation=Propagation.REQUIRED)   

支持当前事务,如果没有事务会创建一个新的事务。有事务会合并为一个事务。

子事务回滚,父事务一定回滚

父事务回滚,子事务一定回滚

2.@Transactional(propagation=Propagation.SUPPORTS)   

支持当前事务,没有事务的时候以没有事务的方式执行

如果当前存在事务,则加入事务
如果当前不存在事务,则以非事务方式运行,这个和不写没区别

3.@Transactional(propagation=Propagation.MANDATOR)

如果当前存在事务,则运行在当前事务中
如果当前无事务,则抛出异常,也即父级方法必须有事务

4.@Transactional(propagation=Propagation.REQUIRES_NEW)      

新建事务,如果当前存在事务则挂起。

父事务回滚不影响子事务提交。

5.@Transactional(propagation=Propagation.NOT_SUPPORTS)   

以非事务方式运行
如果当前存在事务,则把当前事务挂起

6.@Transactional(propagation=Propagation.NEVER)   

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

7.@Transactional(propagation=Propagation.NESTED)   

如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值