Spring的事务传播行为
spring事务的传播行为说的是,当多个事务同时存在的时候,spring如何处理这些事务的行为。
事务传播 | 描述 |
---|---|
PROPAGATION_REQUIRED | 如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。 |
PROPAGATION_REQUIRES_NEW | 创建新事务,无论当前存不存在事务,都创建新事务。 |
PROPAGATION_SUPPORTS | 支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。 |
PROPAGATION_NOT_SUPPORTED | 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 |
PROPAGATION_MANDATORY | 支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常。 |
PROPAGATION_NEVER | 以非事务方式执行,如果当前存在事务,则抛出异常。 |
PROPAGATION_NESTED | 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则按REQUIRED属性执行。 |
很多时候都记不住搞混,按照共性对比记忆就好记很多了。
两个require,两个support,两个异常,一个嵌套
两个require
-
require:必须要求事务
-
require_new:一定创建新的事务
两个support
-
support:如果支持事务就以事务进行,如果没有事务就非事务运行,看的是别人有没有事务
-
not_support:不支持事务,如果有事务就挂起
两个异常
-
mandatory(强制):必须有事务,没有事务就抛出异常
-
never:不能有事务,有就抛出异常
一个嵌套
- nested( 嵌套 ):有事务,嵌套,没事务创建一个事务