> 文章列表 > Spring的事务传播行为

Spring的事务传播行为

Spring的事务传播行为

事务传播行为

多个声明的事务的方法在相互调用的时候,这个是事务应该如何去传递。
Spring的事务传播行为
比如说methodA()调用methodB(), 那么这两个方法都显示了开启了事务,那么methodB()是开启一个新的事务还是继续在methodA()这个事务里面去执行就取决于所谓的事务传播的一个行为。

在Spring中定义了七种事务传播行为。

REQUIRED

它是Spring里面默认的事务传播行为。也就是说如果当前存在事务,就加入到这个事务中去执行。如果不存在事务就新建一个事务。

REQUIRED_NEW

它不管是说是否存在事务,它都会新开启一个事务来执行。新老事务之间是相互独立的。外部事务抛出异常,并不会影响内部事务的一个正常提交。

NESTED

如果当前存在事务,就嵌套在当前事务中去执行。如果当前没有事务,那么就新建一个事务。类似REQUIRE_NEW这样一个传播行为。

SUPPORTS

表示支持当前的事务,如果当前不存在事务就以非事务的方式执行。

NOT SUPPORTED

它表示以非事务的方式来运行。如果当前存在事务,就需要把当前的事务挂起来。

MANDATORY

它是一个强制的事务执行,就是如果当前不存在事务,就抛出一个异常。

NEVER

以非事务的方式来执行。如果当前存在事务则抛出异常。

Spring里面的事务传播级别,一般是不需要去定义的。默认就是一个REQUIRED。除非是在嵌套的事务的情况下,需要重点去了解。

参考资料:事务传播行为