【5分钟背八股】Spring的事务传播机制是什么?

多个事务方法相互调用时,事务如何在这些方法之间进行传播,spring中提供了7中不同的传播特性,来保证事务的正常执行:

  • REQUIRED:默认的传播特性,如果当前没有事务,则新建一个事务,如果当前存在事务,则加入这个事务

  • SUPPORTS:当前存在事务,则加入当前事务,如果当前没有事务,则以非事务的方式执行

  • MANDATORY:当前存在事务,则加入当前事务,如果当前事务不存在,则抛出异常

  • REQUIRED_NEW:创建一个新事务,如果存在当前事务,则挂起改事务

  • NOT_SUPPORTED:以非事务方式执行,如果存在当前事务,则挂起当前事务

  • NEVER:不使用事务,如果当前事务存在,则抛出异常

  • NESTED:如果当前事务存在,则在嵌套事务中执行,否则REQUIRED的操作一样

NESTED和REQUIRED_NEW的区别:

REQUIRED_NEW是新建一个事务并且新开始的这个事务与原有事务无关,而NESTED则是当前存在事务时会开启一个嵌套事务,在NESTED情况下,父事务回滚时,子事务也会回滚,而REQUIRED_NEW情况下,原有事务回滚,不会影响新开启的事务

NESTED和REQUIRED的区别:

REQUIRED情况下,调用方存在事务时,则被调用方和调用方使用同一个事务,那么被调用方出现异常时,由于共用一个事务,所以无论是否catch异常,事务都会回滚,而在NESTED情况下,被调用方发生异常时,调用方可以catch其异常,这样只有子事务回滚,父事务不会回滚。


【5分钟背八股】09:spring的事务传播机制是什么?.png

推荐学习:【5分钟背八股】spring框架中使用了哪些设计模式及应用场景?

#java后端面试##笔试题目#
Java八股文 文章被收录于专栏

长期分享Java面试、面经、学习、架构笔记

全部评论

相关推荐

牛客722552937号:新锐之星有点坑爹,特别是对男的
点赞 评论 收藏
分享
点赞 2 评论
分享
牛客网
牛客企业服务