Spring 事务传播机制
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 中事务传播机制,这是面试中经常问到的一个点,理解它并在合适的场景下选择合适的事务传播机制。
版权声明: 本文为 InfoQ 作者【周杰伦本人】的原创文章。
原文链接:【http://xie.infoq.cn/article/169e3c5ea28d8d3f6a281cd42】。文章转载请联系作者。
评论