spring 事务管理 2(spring的事务方法镶嵌使用,事务边界和传播性)没完

 许多人认为spring一个事务方法不该该调用另外一个事务方法,不然将产生两个事务,实际上是没有正确理解spring的事务传播性和边界spring

Spring 对事务控制的支持统一在 org.springframework.transaction.TransactionDefinition 类中描述,
该类有如下几个重要的接口方法:接口

int getPropagationBehavior():事务的传播行为事务

int getIsolationLevel():事务的隔离级别get

int getTimeout():事务的过时时间it

boolean isReadOnly():事务的读写特性。io

所谓事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播。Spring 支持 7 种事务传播行为:方法

PROPAGATION_REQUIRED 若是当前没有事务,就新建一个事务,若是已经存在一个事务中,加入到这个事务中。这是最多见的选择。im

PROPAGATION_SUPPORTS 支持当前事务,若是当前没有事务,就以非事务方式执行。异常

PROPAGATION_MANDATORY 使用当前的事务,若是当前没有事务,就抛出异常。时间

PROPAGATION_REQUIRES_NEW 新建事务,若是当前存在事务,把当前事务挂起。

PROPAGATION_NOT_SUPPORTED 以非事务方式执行操做,若是当前存在事务,就把当前事务挂起。

PROPAGATION_NEVER 以非事务方式执行,若是当前存在事务,则抛出异常。

PROPAGATION_NESTED 若是当前存在事务,则在嵌套事务内执行。若是当前没有事务,则执行与 PROPAGATION_REQUIRED 相似的操做。

下面简要介绍下事务的边界

相关文章
相关标签/搜索