Spring事务传播机制
记忆口诀。读口诀时,右脑一定要想对应的画面。
需要 | 支持 | 强制的 | 需要新的 | 不支持的 | 决不 | 嵌套 |
嘘 | 紫色的 | 光头强 | 猩猩 | 紫色的布 | 决不 | 钱钱 |
嘘!看紫色的光头强,送给猩猩一匹紫色的布,并且决不收它的钱钱。
当前方法,当前环境是“事务环境”,当前环境是“非事务环境”
required:需要,默认
我需要事务。如果有就加入;没有就新建。
supports:支持
我支持当前环境。无论当前环境是“事务环境”,还是“非事务环境”,我都支持。
mandatory:强制的
我强制的要求当前环境是事务环境,否则抛异常。
requires_new:需要新的
我要自己的新建的事务。如果已有一个事务,就把它挂起。
not_supported:不支持—— 以非事务方式执行;如果当前事务存在,就挂起当前事务。
我不支持事务。如果当前环境是事务环境,就把它挂起。
never:决不
我决不允许当前环境是事务环境,否则抛异常。
nested:嵌套,嵌套事务、子事务
我要自己的新建的(嵌套)事务。如果已有一个事务,就嵌套入它。
外部事务回滚,嵌套也回滚;但是嵌套事务回滚不会影响外部事务。
|
|
当前是“事务环境” |
当前是“非事务环境” |
required |
需要 |
加入 |
新建 |
supports |
支持 |
加入 |
以非事务方式执行 |
mandatory |
强制的 |
加入 |
抛异常 |
requires_new |
需要新的 |
新建,挂起 |
新建 |
nested |
嵌套 |
新建,嵌套进 |
新建 |
not_supported |
不支持的 |
挂起 |
以非事务方式执行 |
never |
决不 |
抛异常 |
以非事务方式执行 |
nested |
嵌套 |
新建,嵌套进 |
新建 |