Spring事务的7种传播行为的区别

当事务方法被另一个事务方法调用时,被调用的方法就会将事务传播给调用方。
而传播行为就是指这个被调方法所定义的事务如何传播过去。

Spring定义了7种事务的传播行为:
Propagation.REQUIRED(默认) 表示所修饰的方法必须运行在事务中。当调用方抛出异常的时候,被调的方法也会回滚。

Propagation.REQUIRES_NEW 表示所修饰的方法只会运行在它自己的事务中,与调用方的事务是互不影响的。当调用方抛出异常的时候,被调方法不会回滚。

Propagation.SUPPORTS 表示所修饰的方法自身不运行在事务中,若调用方有事务,那么它就运行在调用方的事务中,若调用方没有事务,就以非事务方式运行。
在这里插入图片描述
Propagation.MANDATORY 表示所修饰的方法必须在事务中运行。若调用方没有事务,就抛出异常,且回滚。

Propagation.NOT_SUPPORTED 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

Propagation.NEVER 表示所修饰的方法以非事务的方式运行,若调用方有事务,就抛出异常Existing transaction found for transaction marked with propagation ‘never’

Propagation.NESTED 若调用方有事务,则嵌套事务内执行。如果调用方没有事务,则执行与PROPAGATION_REQUIRED类似的操作。
(这个和REQUIRED区别在于一个是加入到一个事务,一个是在嵌套事务运行)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值