spring 事务方式和事务传播

spring 事务方式和事务传播
Spring框架提供了多种方式来处理事务,以确保在应用程序中数据的一致性和完整性。在Spring中,事务可以通过注解、XML配置或编程方式来管理,而事务传播机制定义了事务在多个方法之间的传递和交互方式。

以下是Spring中常用的事务方式和事务传播机制:

  1. 事务方式:

声明式事务管理:通过注解或XML配置的方式声明事务。Spring提供了@Transactional注解和XML配置来定义事务的开始、提交、回滚等行为。例如:

java
@Transactional
public void someTransactionalMethod() {
// 事务处理代码
}
编程式事务管理:通过编程方式在代码中使用TransactionTemplate或PlatformTransactionManager来控制事务。这种方式更加灵活,但也更繁琐。例如:

java
TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// 事务处理代码
}
});
2. 事务传播机制:

Spring定义了多种事务传播行为,用于控制事务在方法之间的传递和嵌套行为。这些传播行为可以通过propagation属性进行设置。以下是常见的事务传播机制:

PROPAGATION_REQUIRED:如果当前存在事务,则加入该事务,如果不存在事务,则创建一个新的事务。

PROPAGATION_REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则将其挂起。

PROPAGATION_SUPPORTS:如果当前存在事务,则加入该事务,如果不存在事务,则以非事务方式执行。

PROPAGATION_NOT_SUPPORTED:以非事务方式执行,如果当前存在事务,则将其挂起。

PROPAGATION_MANDATORY:要求当前存在事务,如果不存在事务,则抛出异常。

PROPAGATION_NEVER:要求当前不存在事务,如果存在事务,则抛出异常。

PROPAGATION_NESTED:嵌套事务,如果当前存在事务,则在嵌套事务中执行,可以嵌套多层事务。

这些传播机制允许您灵活地控制事务的行为,以适应不同的业务需求和复杂性。根据具体的情况,您可以选择合适的事务方式和传播机制来管理事务。例如,对于一个需要嵌套事务的业务逻辑,您可以使用PROPAGATION_NESTED传播行为。对于一个需要独立事务的业务逻辑,您可以使用PROPAGATION_REQUIRES_NEW传播行为。这样,Spring框架能够提供一致的事务管理,同时满足不同的事务需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/20134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字符串-至多包含K种字符的子串中最长子串(mid)

一、题目描述 二、解题思路 借鉴以下题目思想,使用双指针,外层循环右侧指针移动,内存循环左侧指针移动 字符串-最长不含重复字符的子字符串(mid)-CSDN博客文章浏览阅读622次,点赞17次,收藏4次。java刷题:…

探索第三方美颜SDK:美颜插件的技术原理

本篇文章,我们将深入了解第三方美颜SDK,主要探讨关于美颜插件的工作机制与算法。 一、第三方美颜SDK的概述 第三方美颜SDK是由专业团队开发的一套用于实现美颜功能的软件开发工具包。它通常包括了各种美颜算法、滤镜效果、人脸识别等核心技术&#xff…

Kafka broker的新增和剔除(服役与退役)

说明:集群现有broker:node1,node2,node3三个,broker.id分别为0,1,2 已有两个topic:products、cities 1、退役(Kafka集群中减少一个服务器broker2) 退役后要保证剩下的服务器数量大于等于备份数&#xff0c…

【IC前端Job】

IC前端Job 1 前端1.1 前端设计1.2 前端验证(DV)1.3 FPGA原型验证1.4 Emulator1.5 软件验证 上一篇文章细说了设计文档对于IC前端设计人员的重要性;这次集中在前端设计从RTL编码–>RTL freeze这个过程中所要工作和打交道的地方; IC前端设计具体工作&am…

Pytorch常用函数用法归纳

一、创建tensor张量 1.torch.arange() (1)函数原型 torch.arange(start0,end,step1,*,outNone,dtypeNone,layouttorch.strided,deviceNone,requires_gradFalse) (2)参数说明: 参数名称参数类型参数说明startNumber起始值,默认值为0endNumber结束值stepNumber步…

软件设计不是CRUD(21):在流式数据处理系统中进行业务抽象落地——需求分析

本文主要介绍如何在数据处理系统中应用业务抽象的设计思想。目前业界流行的数据处理方式是流式处理,主流的流式处理引擎有Apache Spark,Apache Flink等等。本文选择Apache Flink作为实战案例的落地。由于本文主要是讲解设计思想和流式处理引擎相结合的方…

使用docker直接运行不同版本nodejs命令

在低版本的操作系统上,安装和使用高版本的node以及相关工具可能会因为兼容性问题而无法使用,比如对Ubuntu 18.04来说,会因为glibc的版本问题而无法直接安装使用nodejs 18以上的版本。运行弄得是可能会遇到类似的报错 node: /lib/x86_64-linu…

Linux基础指令目录管理003

今天我们讲一下目录的切换。 操作系统: CentOS Stream 9 操作命令: cd 改变当前工作目录 [rootlocalhost ~]# cd /usr/local/nginx/conf [rootlocalhost conf]# cd .. [rootlocalhost nginx]# cd .. [rootlocalhost local]# 操作命令: …

排八字软件有哪些?

排八字软件有哪些?在市面上有很多排八字的软件可供选择,其中一些比较知名的有: 无敌八字排盘软件:这是一款功能强大的八字排盘软件,提供详细的八字解析和命理分析服务,且完全免费。 网易星盘:网…

【一百】【算法分析与设计】N皇后问题常规解法+位运算解法

N皇后问题 链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 给出一个nnn\times nnn的国际象棋棋盘,你需要在棋盘中摆放nnn个皇后,使得任意两个皇后之间不能互相攻击。具体来说,不能存在两个皇后位于同…

自用了很久的一款强制卸载软件,超级好用!!!

Ashampoo UnInstaller是一款由Ashampoo公司开发的专业卸载工具,它提供了比Windows自带卸载功能更为彻底的程序卸载解决方案。是一款功能强大的卸载工具,旨在帮助用户彻底删除不需要的程序和应用,卸载难以卸载的软件工具,此外他还有…

面试杂谈k8s

其实看我之前的博客,k8s刚有点苗头的时候我就研究过,然后工作的时候间接接触 也自己玩过 但是用的不多就忘记了,正苦于不知道写什么,水一篇 用来面试应该是够了 支持云应用开发、运行与运维一体化的云应用平台软件应运而生 k8s核…

三、框架基础介绍:关于框架基础结构的创建与功能解析

在最近的项目开发中,我们进行了精心的组件结构搭建。 首先,在 src 目录下创建了 components 文件夹,随后在其中创建了 index-basis目录。 在下面创建以下文件 ——index.vue 主组件 ——theme.scss 主题 ——Layout 布局 —— —— rou…

供应商平台基本功能

1.合同管理 合同基本功能 1.1 列表页 搜索:合同编号 列表:合同列表页 查看:跳转到详情页 合计:确认当前页合计,还是所有合同合计。 1.1.2 详情页 点击合同列表页查看跳转至合同详情 1.2合同执行情况 合同具体执行情况&…

智慧车站管理:提升地铁站新质生产力的策略

应用图扑自研产品 HT for Web 结合 BIM 技术,搭建轻量化的 WebGIS 智慧车站系统。 该系统通过整合轨道交通信息,实现了车站数据的多维互联与融合。提升了车站信息管理效率和运营效能,并优化了乘客出行体验。对构建智能、高效、环保的轨道交通…

使用C#实现VS窗体应用——画图板

✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。🍎个人主页:Meteors.的博客💞当前专栏:小项目✨特色专栏: 知识分享&#x1f96d…

前端树形结构组件的设计与实现:以企查查、天眼查股权结构为例

摘要 随着信息化时代的不断发展,数据可视化在各行各业的应用越来越广泛。特别是在商业信息查询领域,如企查查、天眼查等平台,通过直观的数据展示方式,帮助用户快速理解复杂的商业关系。本文将以一个前端tree树形结构模版组件为例…

【算法】模拟算法——替换所有的问号(easy)

题解:替换所有的问好(模拟算法) 目录 1.题目2.题解3.参考代码4.总结 1.题目 题目链接:LINK 2.题解 纯模拟。从前往后遍历整个字符串,找到问号之后,就⽤ a ~ z 的每⼀个字符去尝试替换即可。 3.参考代码 class Solution { pu…

EVO轨迹评估工具基本使用教程(学习记录)

参考文章链接: slam轨迹评估性能指标汇总 EVO安装使用教程 各类数据格式 slam精度评定工具 轨迹评估工具使用:evo安装以及学习 EVO学习记录 评估slam输出轨迹精度的工具,自动生成均值、方差、轨迹等信息的图或表。 支持数据集&#x…

使用docker部署项目

一、docker私有镜像仓库 1、docker私有镜像仓库 库(Repository)是集中存放镜像的地方,又分为公共镜像和私有仓库。 当我们执行docker pull xxx的时候,它实际上是从registry.docker.com这个地址去查找,这就是Docker公…