Spring事务的两种常用传播方式
为什么会有事务的传播方式呢?
因为有时候是有嵌套事务的存在的。
就比如买一书的时候你给加了事务(锁住一本书减库存,减余额),
那如果买多本书呢?
可以在买多本书的方法上加事务。
这就形成了嵌套事务。
使用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)是加在内层的事务中,而不是外层的事务。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
