栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring事务的传播行为(二)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring事务的传播行为(二)

事物的七种形式中,常用的两种方式,基本开发中也就用到这2种

(1)PROPAGATION_REQUIRED 如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。

  // 事务属性 PROPAGATION_REQUIRED methodA{ …… methodB(); …… }123456 // 事务属性 PROPAGATION_REQUIRED methodB{ …… }   使用 spring 声明式事务, spring 使用 AOP 来支持声明式事务,会根据事务属性,自动在方法调用之前决 定是否开启一个事务,并在方法执行之后决定事务提交或回滚事务。  

Spring保证在methodB方法中所有的调用都获得到一个相同的连接。在调用methodB时,没有一个存 在的事务,所以获得一个新的连接,开启了一个新的事务。 单独调用MethodA时,在MethodA内又会调用MethodB。

调用 MethodA 时,环境中没有事务,所以开启一个新的事务 . 当在 MethodA 中调用 MethodB 时,环境中 已经有了一个事务,所以methodB 就加入当前事务。 (2 ) PROPAGATION_REQUIRES_NEW 总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。(常用在日志中,A中失败了,并不影响B中,继续打印日志) // 事务属性 PROPAGATION_REQUIRED methodA(){ doSomeThingA(); methodB(); doSomeThingB(); } // 事务属性 PROPAGATION_REQUIRES_NEW methodB(){ …… } A为外层事务,B 称为内层事务。从上面的代码可以看出,A 与B 是两个独立的事 务,互不相干。 如果 methodA 方法在调用 methodB 方法后的 doSomeThingB方法失败了,而 methodB 方法所做的结果依然被提交。而除了 methodB 之外的其它代 码导致的结果却被回滚了。使用PROPAGATION_REQUIRES_NEW, 需要使用 JtaTransactionManager 作为事务管理器。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/603251.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号