Spring之事务传播

在TransactionDefinition接口中定义

事务的7中传播特性

  1. PROPAGATION_REQUIRED
    支持当前事务,如果当前没有事务,则新建一个事务,这是最常见的选择。 也就是说如果当前有事务,则加入到当前事务中,没有则新建事务执行。
  2. PROPAGATION_SUPPORTS
    支持当前事务,如果当前没有事务,则以非事务的方式执行。
  3. PROPAGATION_MANDATORY
    支持当前事务,如果当前没有事务,则抛出异常。
  4. PROPAGATION_REQUIRES_NEW
    新建事务,如果当前存在事务,则将当前事务挂起。注意,这是启动一个新的,不依赖于环境的事务,这个事务将被完全的commited或rolled back而不依赖于其他外部事务,它拥有自己的隔离范围,锁等。当事务开启执行时,外部事务会被挂起,当它结束之后,外部事物才会被执行。
  5. PROPAGATION_NOT_SUPPORTED
    以非事务方式提交,如果当前存在事务,就把当前事务挂起。
  6. PROPAGATION_NEVER
    以非事务方式提交,如果当前存在事务,就抛出异常。
  7. PROPAGATION_NESTED
    如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。
    注意:它开始一个嵌套的事务,它是已经存在的事务的一个真正的子事务。嵌套事务开始执行时,将取得一个savepoint,如果这个嵌套事务失败,它将进行回滚到此savepoint。嵌套事务是外部事务的一部分,只有外部事务结束后它才会被提交。

猜你喜欢

转载自blog.csdn.net/java852987/article/details/83374392