您现在的位置是:亿华云 > 系统运维
Spring中的事务传播行为有哪些?
亿华云2025-10-09 03:19:53【系统运维】4人已围观
简介今天,我给大家分享一下,我对Spring传播行为的理解。1、事务传播行为在日常开发中,我们经常会存在多个声明了事务的方法相互调用,在这种情况下,会存在嵌套两个或两个以上事务的情况,所谓事务传播行为就是
今天,事务我给大家分享一下,传播我对Spring传播行为的事务理解。
1、传播事务传播行为在日常开发中,事务我们经常会存在多个声明了事务的传播方法相互调用,在这种情况下,事务会存在嵌套两个或两个以上事务的传播情况,所谓事务传播行为就是事务指这些事务之间的传播规则。来看这样一段代码:
@Transaction(Propagation = REQUIRED_NEW)
public void methodA(){
}
@Transaction(Propagation = REQUIRED)
public void methodB(){
methodA();
}在这段代码中,传播methodB()调用了methodA(),事务两个方法都显示的传播开启了事务。methodA()是事务开启一个新事务,还是传播继续在methodB()这个事务中执行?就取决于事务的传播行为规则的定义。
2、事务事务嵌套事务嵌套是云南idc服务商指两个或两个以上开启的事务的方法嵌套调用,在这种情况下,需要制定这些事务之间的传播行为规则。在Spring中,一共定义了7种内置的事务嵌套传播行为:
第1种:REQUIRED,它是Spring默认的事务传播行为。表示如果当前存在事务,则加入这个事务,如果不存在事务,就新建一个事务。
第2种:REQUIRE_NEW:表示不管是否存在事务,都会新建一个事务,新建的事务和原来已经定义的事务相互独立。外部事务抛出异常回滚不会影响内部事务的正常提交。
第3种:NESTED:如果当前存在事务,b2b供应网则嵌套在当前事务中执行。如果当前没有事务, 则新建一个事务,类似于REQUIRE_NEW。
第4种:SUPPORTS:表示支持当前事务,如果当前不存在事务,以非事务的方式执行。
第5种:NOT_SUPPORTED:表示以非事务的方式来运行,如果当前存在事务,则把当前事务挂起。
第6种:MANDATORY:强制事务执行,若当前不存在事务,则抛出异常.
第7种:NEVER:以非事务的方式执行,如果当前存在事务,则抛出异常。
Spring事务传播一般不需要开发人员显式定义,默认就是PROPAGATION_REQUIRED,只要在嵌套事务的情况下需要重点了解。
很赞哦!(93)
上一篇: 以上的就是为大家介绍的关于域名的详解
下一篇: 4、说起来容易
相关文章
- 用户邮箱的静态密码可能已被钓鱼和同一密码泄露。在没有收到安全警报的情况下,用户在适当的时间内不能更改密码。在此期间,攻击者可以随意输入帐户。启用辅助身份验证后,如果攻击者无法获取移动电话动态密码,他将无法进行身份验证。这样,除非用户的电子邮件密码和手机同时被盗,否则攻击者很难破解用户的邮箱。
- Redo 日志如何在关键时刻拯救数据库?
- Ospf 规划两大模型:双塔奇兵、犬牙交错
- Typescript 一些令人又爱又恨的内容 — Type Guard、Narrowing
- 为什么现在中文域名觉得好?使用中文域名有什么好处?
- 基于MongoDB打造.Net的分布式Session子系统
- 一文带你了解如何优雅的处理错误逻辑
- Web Components 系列之实现 MyCard 的基本布局
- 换新域名(重新来过)
- 零售行业的数据挖掘七步走