springBoot方法上面添加@Transactional注解与类上面添加@Transactional注解的区别
@Transactionalpublic void updateData(){aService.updateA();//更新A表bService.updateB();//更新B表cService.updateC();//更新C表}
假设,如果每一个service只会对应的更新他所对应的这张表,下面这三个方法上面加不加@Transactional效果都是一样的。不会对最终的结果产生影响。
Pubic void updateA(){
//只进行更新A表的操作
}
Pubic void updateB(){
//只进行更新B表的操作
}
Pubic void updateC(){
//只进行更新C表的操作
}
这种架构,的意思是将ABC三张表的更新操作绑定成一个原子,更新的时候,要成功都成功,要失败都失败。
如果将上面的架构换成下面这种模式:
public void updateData(){
aService.updateA();//更新A表
if(1==1){
Throw new BussinessException(“模拟发生异常”);
}
bService.updateB();//更新B表
cService.updateC();//更新C表
}
假设,如果每一个service只会对应的更新他所对应的这张表,下面这三个方法上面加不加@Transactional效果都是一样的。不会对最终的结果产生影响。
Pubic void updateA(){
//只进行更新A表的操作
}
Pubic void updateB(){
//只进行更新B表的操作
}
Pubic void updateC(){
//只进行更新C表的操作
}
我们会发现程序抛出了异常,但是A表成功的更新了数据。
如果我们在类上面添加@Transactional 注解
@Transactionalpublic class Test{public void updateData(){aService.updateA();//更新A表bService.updateB();//更新B表cService.updateC();//更新C表}}
Pubic void updateA(){
//只进行更新A表的操作 假设A表中有两条三条数据要进行更新操作,
//我在更新第二条数据的时候手动抛出一个异常
}
这个时候,我们进行测试,会发现,所有的数据都不会进行更新,这就是类级别的@Transactional的作用。
springBoot方法上面添加@Transactional注解与类上面添加@Transactional注解的区别相关推荐
- Springboot之——不能交给Spring管理的类如何添加注解?
情况描述如下: 在EduSubjectServiceImpl方法中,我们调用easyexcel的读方法进行文件的读取,其中有个参数,监听器SubjectExcelListener直接是我们自己new的 ...
- @Configuration注解的类的加载(注意不是处理@Configuration注解处理)实现原理
概述 这里主要分析@Configuration注解的类自身的加载的实现,即生成该类对应的BeanDefinition,注册到BeanFactory,此时该类就跟一个普通使用了如@Component注解 ...
- vue给html动态添加属性,Vue中怎么动态添加类名?
能够向组件添加动态类名是非常强大的功能.它使我们可以更轻松地编写自定义主题,根据组件的状态添加类,还可以编写依赖于样式的组件的不同变体. 添加动态类名与在组件中添加 prop :class=" ...
- springboot在工具类中添加service的方法,显示为空的解决方案
springboot在工具类中添加service的方法,显示为空的解决方案 参考文章: (1)springboot在工具类中添加service的方法,显示为空的解决方案 (2)https://www. ...
- 事务注解放到类上面 下面私有方法有效吗_【面试】足够应付面试的Spring事务源码阅读梳理(建议珍藏)...
Starting from a joke 问:把大象放冰箱里,分几步? 答:三步啊,第一.把冰箱门打开,第二.把大象放进去,第三.把冰箱门带上. 问:实现Spring事务,分几步? 答:三步啊,第一. ...
- IDEA添加自动注释(类注释及方法注释)
IDEA添加自动注释 一.添加类自动注释 二.添加类方法自动注释 一.添加类自动注释 左上角选择 File -> Settings -> Editor -> File and Cod ...
- 在SpringBoot启动类上添加ComponentScan出现springbootapplication already applies given @ComponentScan
查看@SpringBootApplication注解源码,可以看到 @SpringBootApplication=@Configuration+@EnableAutoConfiguration+@Co ...
- 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 @Mixin 注解进行方法注入 | Mixin 混合多个类优先级分析 )
文章目录 一.使用 Mixin 混合进行方法注入 二.Mixin 混合多个类优先级分析 一.使用 Mixin 混合进行方法注入 在上一篇博客 [Groovy]MOP 元对象协议与元编程 ( 方法注入 ...
- MFC类向导添加自定义消息未声明标识符的解决方法
MFC添加自定义消息步骤: 1.在要添加的窗口调出类向导, 这样会生成函数但是会提示 解决方法:在头文件里添加定义 #define WM_FileInformation WM_USER+2 如果还需要 ...
最新文章
- 4、变量和方法被static和final两个关键字修饰,为什么这么做?
- loadrunner 关联匹配多个值
- java连接mysql 不推荐_java连接mysql
- 属性被分为八大类不包括_Python语言---私有属性
- opencv配置_Opencv在vs2012下的配置
- python绘制3d机械图_使用python绘制3d的图形
- java flask_将Java与Python Flask连接
- Promise基本概念和基本示例使用
- python实现滚动截屏功能
- oracle xdb xquery,XML DB与XDB是同一个东西吗?
- Python学习002—python的安装以及pip
- 非洲做项目的务实与务虚
- Win键失效,Win+L不起作用了
- 感谢所有的幸运与不幸 --- 致我的2016
- 网站被qq拦截应该怎么处理
- 基于uni-app手机端后台管理系统uni-uadmin
- GCF(4)----手机认证相关知识
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十四 ║ VUE 计划书 我的前后端开发简史...
- python3.7的IDEL怎么清屏
- 一篇文章轻松学会python装饰器
热门文章
- 为什么推荐做印尼tiktok?
- 如何安装mysql5.7.15_ubuntu16.04安装mysql5.7.15
- Leetcode每日一题:925.Long Pressed Name(长按键入)
- ROS入门-2.Linux系统基础操作
- Anaconda安装过程中出现InvalidArchiveError
- 机器学习-吴恩达-笔记-11-异常检测
- iOS Coding Style Guide 代码规范
- Redis info信息(转载)
- 上deepweb难吗_发动机保养难?傲群除尘毛刷用上了吗
- python语言指令大全_Python语言----linux常用命令(14)