千家信息网

Spring事务的传播行为是什么

发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要介绍"Spring事务的传播行为是什么",在日常操作中,相信很多人在Spring事务的传播行为是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Sprin
千家信息网最后更新 2025年11月08日Spring事务的传播行为是什么

这篇文章主要介绍"Spring事务的传播行为是什么",在日常操作中,相信很多人在Spring事务的传播行为是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Spring事务的传播行为是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、事务的特性ACID

这四个英文单词拼写我一直记不住,求记忆方法

  • 原子性(Atomicity):事务是一系列原子操作,要么全部成功,要么全部失败。

  • 一致性(Consistency):一旦完成(不管是成功还是失败),确保它所在的一系列业务状态保持一致,状态都是成功,或者都是失败,不能一部分成功一部分失败。

  • 隔离性(Isolation):不同事务同时进行某项业务,处理相同的数据时候,需要保证事务之间相互独立,互相之间数据不影响。

  • 持久性(Durability):一旦事务完成,无论发生什么系统性错误,事务执行后的数据都被持久化了,不会因为重启或其他操作对数据进行更改。

二、spring事务传播特性的定义以及案例分析

我们先给出定义再分别进行简单的代码分析

给出百度图片,请大家参考,首先生命力如果想在工程中运用事务spring 的xml必须开启事务,以下这些特性一般都是在xml属性中进行配置。

类似这种的配置一定要有,否则万事具备只欠东风,这个是DB事务有JTA和JPA以及Herbernate等,这里就不展开说明,可自行百度。

三、案例解析事务传播7大行为

1、无事务,这个时候id 为16的第一次插入成功,第二次插入的时候失败,库中留存第一次的数据


无事务运行

2、propagation_required,默认事务的传播行为required,在进行实验2的时候将表中id为16的数据先删除以免影响接下来的测试。 @Transactional(propagation=Propagation.REQUIRED) == @Transactional这两个的作用是一样的没有事务创建一个事务执行,


事务的传播特行为为required
结果是因为主键冲突将事务进行了回滚,所以两条数据都没有插入进去。

3、propagation_supports,如果当前程序存在事务就加入该事务运行,如果不存在事务则在非事务中运行

事务的传播行为性为supports
因为调用方未用事务那么就在非事务中运行,所以插入了first的第一条数据。

4、propagation_mandatory,必须在一个事务中运行,否则就会抛出异常mandatory 这个单词有强制性的意思我们默认用required 而不用mandatory,是因为mandatory不能自动创建事务。


事务的传播行为为manatory
因为调用的外层没有事务,所以两条数据没有插入。大家想想下面这种写法会发生什么现象

事务的传播行为mandatory

5、propagation_ required _new,不管事务是不是存在,都会另起一个事务,如果事务存在则将当前事务挂起,重新执行新加的事务


事务的传播行为required_new
结果和require一样,两条数据都没有入库,唯一健冲突导致第一条数据回滚,大家可以思考下我下面这两种情况。

情景1新起的事务抛出异常会不会让外围事务回滚?

情景2外围事务失败会不会导致新起事务已提交的回滚?

6、 propagation_ not _support,表示不在事务中运行,如果当前存在事务则将事务挂起


事务的传播行为not_suppoted
这种情景下,如果你根据我的思路一步走的应该可以想到id 为17的入库,第二条主键冲突虽然然而notSupportSonTransationsl()这个方法没有事务所以不影响第一条入库情况,但是外围事务id为16的要进行回滚了,所以库中只有一条数据id=17的。

Existing transaction found for transaction marked with propagation 'never'" class="reference-link">7、 propagation_never,表示当前方法不能运行在事务当中,如果有事务则会抛出异常-->Existing transaction found for transaction marked with propagation 'never'


事务的传播行为NEVER

8、 propagation_nested,这种嵌套的事务,外围如果没有事务则自己另起一个事务,可独立与外围事务进行单独的提交或者回滚(这句话不要理解错了),下面这个案例同样的数据一条也没有落入库中,


事务的传播行为nested

到此,关于"Spring事务的传播行为是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

事务 传播 行为 数据 运行 成功 方法 时候 学习 情景 案例 特性 冲突 影响 一致 接下来 业务 之间 单词 原子 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 命运二为什么连接不上服务器 水结构数据库 陕西维度互联网科技是干什么的 成为网络安全高手路径 南昌企业管理软件开发 毕节安卓软件开发 验证数据库连通性的软件是 想从事数据库具体该学些什么 华润网络安全工程师报考条件 如何获取防火墙服务器地址 刀片式服务器有多厚 cs模式服务器的优点 超融合服务器售后服务电话 软件开发功能性验收包括 网络软件开发共同合作 江苏大型软件开发不二之选 网络安全教育主题日活动 猪八戒网怎样找软件开发兼职 幼儿园小班网络安全儿歌顺口溜 网络安全日志信息包括哪些内容 软件开发笔试问题 数据库唯一标识字段名 labview插入数据库 华润网络安全工程师报考条件 做软件开发需要做哪些投资 互联网科技创业公司排行榜 国家网络安全宣传周教育活动总结 软件开发测试环境账号 服务器租用后管理方法 魔兽世界335单机数据库
0