Spring事务七种传播行为的快速记忆方法

看别人写的Spring事务传播行为详解,洋洋洒洒很多字,看完还是记不住。

如何快速记忆理解还是颇有难度的。

方法一:

类型名 说明
PROPAGATION_REQUIRED 如果当前没有事务,就新建一个事务;如果已经存在一个事务,则加入到这个事务中。(默认情况)
PROPAGATION_REQUIRES_NEW 新建事务,如果当前存在事务,则把当前事务挂起。
PROPAGATION_SUPPORTS 支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_NOT_SUPPORTED 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_MANDATORY 使用当前的事务,如果当前没有事务,就抛出异常。
PROPAGATION_NEVER 以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。

观察类型名称,你会发现有点小规律。

两个REQUIRED,一定有事务,带NEW的总是自己建自己的事务。不带NEW的,有就加入,没有才建。

两个SUPPORTS,有就用,没有就拉到。带NOT的,直接不用。

剩下的,

MANDATORY,强制的意思,必须用,语气强烈,没有就异常。

NEVER,从不,就不用,语气强烈,有就异常。

NESTED,嵌套的意思,有,建嵌套事务。没有,新建普通事务。

方法二:

PROPAGATION_REQUIRED,有个需要,那肯定得有事务,没有就新建。

PROPAGATION_REQUIRES_NEW,需要新的,有,我也得新建个新的。

PROPAGATION_SUPPORTS,支持,我就只是支持嘛,你有,我就用,没有就拉到。

PROPAGATION_NOT_SUPPORTED,不支持,你有我就挂起,就是不用。

剩下三个和方法1一样。

你可能感兴趣的:(Java,spring,java,后端,spring事务,spring事务传播行为)