版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38409944/article/details/82715200
为什么会有事务的传播方式呢?
因为有时候是有嵌套事务的存在的。
就比如买一书的时候你给加了事务(锁住一本书减库存,减余额),
那如果买多本书呢?
可以在买多本书的方法上加事务。
这就形成了嵌套事务。
使用propagation指定事务的传播方式,
即当前事务方法被另一个事务方法调用时如何使用事务。
常用的有·两种方式·来实现嵌套事务的实现:
//默认情况下,即使用当前方法的事务。
@Transactional(propagation = Propagation.REQUIRED)
//创建新的事务。
@Transactional(propagation = Propagation.REQUIRES_NEW)
两张图来区别下:
@Transactional(propagation = Propagation.REQUIRED) :·
@Transactional(propagation = Propagation.REQUIRES_NEW)
简而言之两者区别:嵌套事务中
Propagation.REQUIRED :
以外层嵌套事务为单元,只要有任意一个事务的操作错误,终止全部内容。
Propagation.REQUIRES_NEW:
以内层嵌套事务为单元,只终止发生错误的事务,其他事务互不影响。
注意:
默认是:Propagation.REQUIRED
记住:
@Transactional(propagation = Propagation.REQUIRES_NEW)是加在内层的事务中,而不是外层的事务。