当前位置: 代码网 > it编程>编程语言>Java > Spring事务的传播机制使用及说明

Spring事务的传播机制使用及说明

2025年11月22日 Java 我要评论
spring事务的传播机制1、spring事务指封装在数据库事务之上的一种事务处理机制。其管理方法有两种,分别是编程式事务以及声明式事务。一般我们使用@transactional进行声明式事务。2、s

spring事务的传播机制

1、spring事务

指封装在数据库事务之上的一种事务处理机制。其管理方法有两种,分别是编程式事务以及声明式事务。

一般我们使用@transactional进行声明式事务。

2、spring事务的传播机制

事务的传播,是指一个方法调用另一个方法并将事务传递给它。

事务的转播机制主要针对被调用者而言,控制它是否被传播或者被怎样传播。

spring事务的传播机制有七种

传播行为描述
propagation_required默认的spring事物传播级别,若当前存在事务,则加入该事务,若不存在事务,则新建一个事务
propagation_require_new若当前没有事务,则新建一个事务。若当前存在事务,则新建 一个事务,新老事务相互独立。外部事务抛出异常回滚不会影响内部事务的正常提交
propagation_nested如果当前存在事务,则嵌套在当前事务中执行。如果当前没有事务, 则新建一个事务,类似于require_new
propagation_supports支持当前事务,若当前不存在事务,以非事务的方式执行
propagation_not_supported以非事务的方式执行,若当前存在事务,则把当前事务挂起
propagation_mandatory强制事务执行,若当前不存在事务,则抛出异常
propagation_never以非事务的方式执行,如果当前存在事务,则抛出异常

传播级别一般不需要定义,默认就是propagation_required,除非在嵌套事务的情况。

上述描述表格的描述还是比较抽象,下面我们使用一个例子来说明这个传播机制。

假定方法a调用方法b

方法b定义的事务类型a方法有事务时a方法无事务
 @transactional(propagation = propagation.required)    b和a事务合并成一个事务b新建一个事务
 @transactional(propagation = propagation.requires_new)  b新建一个事务,和a事务无关,互不影响b新建一个事务
 @transactional(propagation = propagation.nested)  b新建一个a的子事务,a异常影响b,b异常不影响ab新建一个事务
 @transactional(propagation = propagation.supports)  b加入到a事务中b无事务
 @transactional(propagation = propagation.not_supported)  挂起a事务,b以无事务方式执行b无事务
 @transactional(propagation = propagation.mandatory)  b加入到a事务中b抛异常
 @transactional(propagation = propagation.never)  b抛异常b无事务

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com