Java---后端事务管理
代码世界聚眸光,昼夜敲盘思绪长。
算法心间精构建,编程路上细思量。
屏前架构乾坤定,键上飞驰智慧扬。
默默耕耘成果现,创新科技铸辉煌。
目录
一,概念
二,Spring事务管理
三,rollbackFor事务回滚
四,propagation传播行为
一,概念
二,Spring事务管理
下面我们举一个小例子来演示一下
首先创建一个Service的接口:
public interface IYZService {/*** 处理用户信息* */User dealUser(String name);/*** 测试* */User testUser(String name);
}
然后实现Service接口:
@Component //将当前容器交给IOC容器管理 成为IOC容器中的bean
public class YZService implements IYZService {@Autowired //运行时,IOC容器会提供该类型的bean对象,并赋值给该变量 这就是依赖注入private YZDao yzDao;@Overridepublic User dealUser(String name) {User user = yzDao.findUserByName(name);Address address = new Address();address.setCity("淄博");address.setProvince("山东");user.setAddress(address);return user;}@Overridepublic User testUser(String name) {User user = yzDao.findUserByName(name);Address address = new Address();address.setCity("淄博1");address.setProvince("山东1");user.setAddress(address);return user;}
}
Dao的接口和类:
public interface IYZDao {/** 根据用户姓名查找用户信息* **/User findUserByName(String name);
}
@Component //将当前容器交给IOC容器管理 成为IOC容器中的bean
public class YZDao implements IYZDao {@Overridepublic User findUserByName(String name) {User user = new User();user.setName(name);user.setAge(20);Address address = new Address();address.setProvince("北京");address.setCity("北京");user.setAddress(address);return user ;}
}
Controller层代码:
@RestController
public class RequestController {@Resource(name ="YZService")private IYZService yzService;@RequestMapping("/yzTestPath/{name}")public Result yzTestPath(@PathVariable String name){User user = yzService.dealUser(name);User user2 = yzService.testUser(name);List<User> list = new ArrayList<User>();list.add(user);list.add(user2);return Result.success(list);}
}
测试:
下面我们先定义一个全局的异常处理器:GlobalExceptionHandler
/*** 全局异常管理器* */
@RestControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(Exception.class)public Result exception(Exception e) {e.printStackTrace();return Result.error("对不起,操作失败,请联系管理员");}
}
接下来我们模拟一个异常
@RestController
public class RequestController {@Resource(name ="YZService")private IYZService yzService;@RequestMapping("/yzTestPath/{name}")public Result yzTestPath(@PathVariable String name){User user = yzService.dealUser(name);//抛出异常int i =1/0;User user2 = yzService.testUser(name);List<User> list = new ArrayList<User>();list.add(user);list.add(user2);return Result.success(list);}
}
接着我们请求接口:
然后看控制台:
错误的堆栈信息也打印出来了。
接下来我们继续将事务管理,这里需要用到@Transactional这个注解:
这个注解一般是作用在业务层的曾删改这一层上面的
三,rollbackFor事务回滚
那么我们如果要指定在所有异常情况下都回滚呢?
@Component //将当前容器交给IOC容器管理 成为IOC容器中的bean
public class YZDao implements IYZDao {@Transactional(rollbackFor = Exception.class)@Overridepublic User findUserByName(String name) {User user = 数据库操作return user ;}
}
四,propagation传播行为
常见的传播行为
@Component //将当前容器交给IOC容器管理 成为IOC容器中的bean
public class YZDao implements IYZDao {@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)@Overridepublic User findUserByName(String name) {User user = new User();user.setName(name);user.setAge(20);Address address = new Address();address.setProvince("北京");address.setCity("北京");user.setAddress(address);test();return user ;}@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW)public void test(){}
}
相关文章:
Java---后端事务管理
代码世界聚眸光,昼夜敲盘思绪长。 算法心间精构建,编程路上细思量。 屏前架构乾坤定,键上飞驰智慧扬。 默默耕耘成果现,创新科技铸辉煌。 目录 一,概念 二,Spring事务管理 三,rollbackFor事务回…...
Leetcode 3223. Minimum Length of String After Operations
Leetcode 3223. Minimum Length of String After Operations 1. 解题思路2. 代码实现 题目链接:3223. Minimum Length of String After Operations 1. 解题思路 这一题还是比较简单的,其实就是想明白对于任何一个字符,如果其个数在3个或以…...
oops使用笔记
oops-plugin-excel-to-json 使用 gitee上的文档图片不可见 参考 > https://forum.cocos.org/t/topic/156800 配置,打开“项目设置”,拖动到最下面,有一个"Excel to Json",前3项采用默认配置吧Excel, 默认的Excel目录是与assets平级的excel目…...
redistemplate介绍与演示
redistemplate是一个用于在Redis中存储和检索数据的模板库。它提供了一组简单易用的函数和接口,使开发者能够更方便地使用Redis进行数据操作。 使用redistemplate,你可以实现以下功能: 存储和检索数据:redistemplate提供了存储和…...
代谢组数据分析(十五):基于python语言构建PLS-DA算法构建分类模型
介绍 本教程描述了一个具有二元分类结果的研究的典型代谢组学数据分析工作流程。主要步骤包括: 从Excel表格导入代谢物和实验数据。基于汇总QC的数据清洗。利用主成分分析可视化来检查数据质量。两类单变量统计。使用偏最小二乘判别分析(PLS-DA)进行多变量分析,包括: 模型…...
任务3 git基础知识(主要是pr的笔记)
任务要求 https://github.com/InternLM/Tutorial/blob/camp3/docs/L0/Git/task.md 文档 https://github.com/InternLM/Tutorial/blob/camp3/docs/L0/Git/readme.md 任务 任务1:提交PR https://github.com/InternLM/Tutorial/pull/1242 任务2:实践…...
三相PWM整流器滞环电流控制仿真matlab simulink
1、内容简介 略 88-可以交流、咨询、答疑 2、内容说明 略 三相PWM整流器已广泛应用工业与电气控制领域电流控制技术决定着三相PWM整流器系统的控制性能。综合比 较了各种电流控制方法应用较多的滞环比较…...
AVL树超详解上
前言 学习过了二叉树以及二叉搜索树后(不了解二叉搜索树的朋友可以先看看这篇博客,二叉搜索树详解-CSDN博客),我们在一般情况下对于二叉搜索树的插入与查询时间复杂度都是O(lgN),是十分快的,但是在一些特殊…...
spring boot 实现token验证登陆状态
1、添加maven依赖到pom.xml <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.11.5</version></dependency><dependency><groupId>io.jsonwebtoken</groupId>…...
【.NET全栈】ASP.NET开发Web应用——用户控件和绘图
文章目录 前言一、用户控件1、创建用户控件2、使用用户控件3、在web.config中注册用户控件4、用户控件中公开属性5、用户控件事件6、动态加载用户控件 二、动态绘图1、基本绘图2、绘制一个自定义的图片3、在Web页面放置自定义图片4、图片格式和质量5、一个Web绘图示例程序 前言…...
一行Python代码实现数据清洗的18种方法
目录 1. 去除字符串两边空格 2. 转换数据类型 3. 大小写转换 4. 移除列表中的重复元素 5. 快速统计元素出现次数 6. 字符串分割成列表 7. 列表合并 8. 数据填充 9. 提取日期时间 10. 字符串替换 11. 快速排序 12. 提取数字 13. 空值处理(假设是列表&am…...
Java API练习 (1) (2024.7.20)
Date类 package APIExercise20240720; import java.util.Date; // 导包,Date是util下的 public class Date20240720 {public static void main(String[] args) {Date nowTime new Date(); // 得到当前系统时间System.out.println(nowTime);Date startTime new Da…...
JavaScript之WebAPIs-BOM
目录 BOM操作浏览器一、Window对象1.1 BOM(浏览器对象模型)1.2 定时器-延时函数1.3 js执行机制1.4 location对象1.5 navigator对象1.6 history对象 二、本地存储三、补充数组中的map方法数组中的join方法数组中的forEach方法(重点)数组中的filter方法(重…...
Math Reference Notes: 数学思想和方法
文章目录 1. 数学思想1.1 数形结合思想1.2 转化思想1.3 分类讨论思想1.4 整体思想 2. 数学方法2.1 配方法2.2 因式分解法2.3 待定系数法2.4 换元法2.5 构造法2.6 等积法2.7 反证法2.8 判别式法 1. 数学思想 1.1 数形结合思想 定义:将数与形(代数与几何…...
Spring Cloud GateWay(4.1.4)
介绍 该项目提供了一个建立在 Spring 生态系统之上的 API 网关,包括:Spring 6、Spring Boot 3 和 Project Reactor。Spring Cloud Gateway 旨在提供一种简单而有效的方法来路由到 API,并为其提供跨领域关注点,例如:安…...
基于PHP+MYSQL开发制作的趣味测试网站源码
基于PHPMYSQL开发制作的趣味测试网站源码。可在后台提前设置好缘分, 自己手动在数据库里修改数据,数据库里有就会优先查询数据库的信息, 没设置的话第一次查询缘分都是非常好的 95-99,第二次查就比较差 , 所以如果要…...
【微信小程序】wx.navigateTo传参时不能使用const定义的数据类型
2024年7月21日更新 今日调试时发现似乎是因为使用vant-weapp时按照官方提示关闭了style:"v2"导致的此情况,打开之后无法复现该内容,特此提示。 以下是原内容 如题,笔者测试了好久才找到这个bug,想传递的数据是this.d…...
【Android studio环境搭建】Android studio连接夜神模拟器
Android studio连接夜神模拟器 一、 步骤 1.下载好Android Studio和夜神模拟器, 2.打开夜神模拟器,找到其安装目录下的 nox_adb.exe文件 3.右键进入cmd命令打开,管理员权限执行下面命令 PS D:\Program Files\Nox\bin> .\nox_adb.exe connect 127.…...
Qt:26.Qt项目:贪吃蛇游戏
一、项目功能演示: 开始界面可以点击进入游戏。 点击进入游戏之后,切换到选项界面,该界面可以选择游戏难度,回退,以及查询最近一次游戏得分。 游戏具体界面如下。贴图啥的可以自己换,本人审美不咋行&#x…...
通过HTML/CSS 实现各类进度条的功能。
需求:我们在开发中会遇到使用各式各样的进度条,因为当前插件里面进度条各式各样的,为了方便我们定制化的开发和方便修改样式,我们这里使用HTML和CSS样式来进行开发进度条功能。 通过本文学习我们会明白如何使用 HTML/CSS 创建各种…...
Opencv学习项目3——人脸识别
之前我们获取了一张图像的人脸信息,现在我们来使用特征点分析来匹配两张lyf照片的相似度 获取两张图片的人脸信息 import cv2 import face_recognition# 加载图像文件 img1 face_recognition.load_image_file(lyf1.png) img2 face_recognition.load_image_file(l…...
【js自学打卡11】生成器函数(generator函数)的使用总结+代码举例
力扣的js入门免费题刷完了,开始自己找题练练,顺便捡捡知识点 力扣2649 1.思路 一眼递归,但事实证明也可以直接flat手撕。 arr.flat(Infinity) //直接扁平化到最底层涉及到了一些关于生成器和异步编程相关的知识点,学一下。 2.…...
深入了解jdbc-02-CRUD
文章目录 操作和访问数据库Statement操作数据表的弊端sql注入问题PreparedStatement类ResultSet类与ResultSetMetaData类资源的释放批量插入 操作和访问数据库 数据库的调用的不同方式: Statement:用于执行静态 SQL 语句并返回它所生成结果的对象。PreparedStatem…...
《基于 Kafka + Quartz 实现时限质控方案》
📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…...
浏览器的卡顿与react的解决思路
以下内容是阅读过程中结合自己的思考而诞生的产物,不一定准确,但相反的,可能个人对实际情况有很大的误解。 仅做参考,欢迎指正。 前面提到浏览器显示的其实是渲染流程最后渲染出来的一张图片,而一个行为引起的副作用需…...
XXE:XML外部实体引入
XXE漏洞 如果服务器没有对客户端的xml数据进行限制,且版本较低的情况下,就可能会产生xxe漏洞 漏洞利用流程 1.客户端发送xml文件,其中dtd存在恶意的外部实体引用 2.服务器进行解析 3.服务器返回实体引用内容 危害:任意文件读…...
3D培训大师创新培训体验,加速空调关键组件的高效精准安装
如今,空调系统的复杂性和精密性与日俱增,对专业技术人员的要求也日益提高。尤其是决定空调是否能平稳运行的空调关键组件的装配培训,不再局限于传统的理论讲解和实体模型演示,而是更注重数字化、沉浸式学习。 案例背景 某空调公…...
PyTorch 深度学习实践-循环神经网络(高级篇)
视频指路 参考博客笔记 参考笔记二 文章目录 上课笔记总代码练习 上课笔记 个人能力有限,重看几遍吧,第一遍基本看不懂 名字的每个字母都是一个特征x1,x2,x3…,一个名字是一个序列 rnn用GRU 用ASCII表作为词典,长度为128&#x…...
这才是老板喜欢的电子信息类简历
点击可直接使用...
MySQL学习之事务,锁机制
事务 什么是事务? 事务就是逻辑上的一组操作,要么全做,要么全不做 事务经典例子:转账,转账需要两个操作,从一个人账户上减钱,在另一个账户上加钱,比如说小红给小明转账100元&…...
wordpress 登入不进去/太原seo快速排名
在C中,下标操作符一般用于访问容器中的元素,用中括号[]表示。对于表示容器的类来说,可以通过重载下表操作符来访问容器中的元素。 1 表示容器的类 自定义一个表示容器的类,如下所示。 class myClass{public:int dim;int* arr; …...
网站从建设到运行要多少钱/襄阳网站推广优化技巧
老师布置的作业,一直没有完成。现在有一些时间,继续完成它们。其中一题是列出当前月的每一天。public IEnumerable<DateTime> AllDatesInMonth(int year, int month){int days DateTime.DaysInMonth(year, month);for (int i 1; i < days; i)…...
营销型网站建设广州/创建网站免费注册
如果是刚接触 web scraper 的,可以看第一篇文章。 web scraper 是一款免费的,适用于普通用户(不需要专业 IT 技术的)的爬虫工具,可以方便的通过鼠标和简单配置获取你所想要数据。例如知乎回答列表、微博热门、微博评论…...
校园网站怎么做/宁波seo网站排名
1.axios的配置 main.js import Vue from vue import App from ./App.vue // 引入 路由 import VueRouter from vue-router // 引入 路由配置文件 import routes from ./router.config // 引入 vuex入口文件 import store from ./store/index // 引入 axios import axios from a…...
2022年新闻摘抄十条简短/搜索引擎优化原理
新建一个应用程序,在窗体上放置一个TTimer和一个TPopupMenu,TTimer的Interval属性为1500,TPopupMenu建立三个子菜单项,分别为“总在最前”、“背景穿透”和“退出”。再准备一张背景图片。工程源代码如下: unit Unit1;…...
长岛网站建设/百度搜索排名怎么做
一. 项目经理需要具备的素质和团队管理 1.1 个人素质: 1:做事要有计划 白天将今天的任务想一遍,晚上将一天的工作在脑子里总结下 我今天要干什么?我今天都干了什么? 2:每天花5%-10%的时间去看些书籍或者网…...