写点什么

Spring 事务传播机制

作者:周杰伦本人
  • 2022-10-21
    贵州
  • 本文字数:528 字

    阅读完需:约 1 分钟

Spring 事务传播机制

大家都知道 spring 的有个很重要的概念就是事务,事务传播是如果 a 方法中调用了 b 方法,那么 b 方法是用 a 的事务呢还是单独开启另外的事务呢?


这就牵扯到了 Spring 的事务传播机制


Spring 有 7 中事务传播机制,我一一给大家做个简单的介绍

REQUIRED

这是 Spring 默认的传播机制,如果 a 方法没有开启事务 b 就会自己新建一个事务,如果 a 开启了事务,b 就会使用 a 的事务

REQUIRES_NEW

显然这时候 b 需要创建一个新的事务,如果 a 开启了事务,b 会挂起当前的事务,不管 a 有没有事务,b 都会使用新的事务

SUPPORTS

如果 a 开启了事务,b 就用 a 的事务,如果 a 没有事务,b 也不会新建事务,也会以非事务的方式运行

NOT_SUPPORTED

如果 a 开启了事务,b 会把这个事务挂起,也就是说方法会以非事务的形式运行

NEVER

显然这个比 NOT_SUPPORTED 更加的强势,它会让 a 和 b 都不使用事务,如果存在事务的话就会抛出异常

NESTED

当 a 事务有的话,b 会嵌套一个事务,当 b 出现异常的时候 b 会回滚,a 不受影响,a 回滚的话 b 也会回滚。也就是 b 不会影响 a,a 影响 b

MANDATORY

MANDATORY 是强制性的意思,a 如果有事务,b 就会和 a 共用同一个事务,如果 a 没有事务,b 就抛出异常信息

总结

本篇主要介绍了 spring 的 7 中事务传播机制,这是面试中经常问到的一个点,理解它并在合适的场景下选择合适的事务传播机制。

发布于: 刚刚阅读数: 3
用户头像

还未添加个人签名 2020-02-29 加入

公众号《盼盼小课堂》,多平台优质博主

评论

发布
暂无评论
Spring事务传播机制_10月月更_周杰伦本人_InfoQ写作社区