Spring的事务传播行为?
什么叫事务的传播行为?
A方法和B方法都有事务,当A在调用B时,会将A中的事务传播给B方法,B方法对于事务的处理方式就是事务的传播行为。
Spring有7种事务传播行为。Spring事务本质上是管理数据库事务;数据库事务本质上是管理数据库锁。
(1)REQUIRED:
(需要)
如果当前存在事务,则加入该事务;
如果当前没有事务,则创建一个新的事务。
(2)SUPPORTS:
(支持)
如果当前存在事务,则加入该事务;
如果当前没有事务,则以非事务的方式继续运行。
(3)MANDATORY:
(义务)
如果当前存在事务,则加入该事务;
如果当前没有事务,则抛出异常。
(4)REQUIRES_NEW:
(需要——新)
创建一个新的事务,如果当前存在事务,则把当前事务挂起。
(5)NOT_SUPPORTED:
(不支持)
以非事务方式运行,如果当前存在事务,则把当前事务挂起。
(6)NEVER:
(从不)
以非事务方式运行,如果当前存在事务,则抛出异常。
(7)NESTED:
(嵌套)
如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于REQUIRED。