欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > Spring面试题之事务的传播行为

Spring面试题之事务的传播行为

2025/4/19 16:38:22 来源:https://blog.csdn.net/qq_42454244/article/details/143625138  浏览:    关键词:Spring面试题之事务的传播行为

Spring事务的传播行为是java面试中比较常问到的内容,有同学总是会与隔离级别弄混淆。起始很好理解的,传播行为是多个事务方法之间的调用时,如何对事务进行管理。举个例子,方法A存在事务,方法B也存在事务,那么A方法调用B方法时,是用A的事务还是B方法的事务?这里就需要配置传播行为来告诉Spring如何去管理事务。

Spring事务分为七种:

  • REQUIRED:支持当前事务,如果当前方法存在事务,就用当前方法的事务,如果当前方法不存在事务,就新建一个事务。比如A调用B,传播行为是REQUIRED,那么A方法存在事务,调用B方法时,B方法也会加入到A方法的事务中。A、B同时成功或同时失败。
  • SUPPORTS:支持当前事务,如果当前方法不存在事务,就以非事务运行。还是A、B两个方法,A方法不存在事务,A调用B,那么B方法也以非事务运行;但是如果A存在事务,那么B也加入A的事务。
  • REQUIRES_NEW:不支持当前事务,不管当前方法存不存在事务,都会新建一个事务执行。就是不管方法A有没有事务,A调用B时,B都会新建一个事务,B方法自己内部同时成功或同时失败.
  • MANDATORY:这个单词是强制的意思,“人如其名”,就是我一定要在事务中运行。如果当前方法不存在事务就抛出异常。
  • NOT_SUPPORTED:以非事务运行,不支持事务,如果当前方法存在事务,就挂起事务。A方法如果存在事务,A方法调用B方法,B方法会将A方法的事务挂起直到B方法运行完毕。直白的说,就是我B方法失败了也不用你A方法负责。
  • NEVER:以非事务方式运行,不支持事务,如果当前方法存在事务,就抛出异常。
  • NESTED:嵌套事务。如果当前存在事务,则在嵌套事务内执行;如果当前没有事务,则创建一个新的事务。嵌套事务可以独立于外部事务进行提交或回滚。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词