@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注解的区别相关推荐

  1. Springboot之——不能交给Spring管理的类如何添加注解?

    情况描述如下: 在EduSubjectServiceImpl方法中,我们调用easyexcel的读方法进行文件的读取,其中有个参数,监听器SubjectExcelListener直接是我们自己new的 ...

  2. @Configuration注解的类的加载(注意不是处理@Configuration注解处理)实现原理

    概述 这里主要分析@Configuration注解的类自身的加载的实现,即生成该类对应的BeanDefinition,注册到BeanFactory,此时该类就跟一个普通使用了如@Component注解 ...

  3. vue给html动态添加属性,Vue中怎么动态添加类名?

    能够向组件添加动态类名是非常强大的功能.它使我们可以更轻松地编写自定义主题,根据组件的状态添加类,还可以编写依赖于样式的组件的不同变体. 添加动态类名与在组件中添加 prop :class=" ...

  4. springboot在工具类中添加service的方法,显示为空的解决方案

    springboot在工具类中添加service的方法,显示为空的解决方案 参考文章: (1)springboot在工具类中添加service的方法,显示为空的解决方案 (2)https://www. ...

  5. 事务注解放到类上面 下面私有方法有效吗_【面试】足够应付面试的Spring事务源码阅读梳理(建议珍藏)...

    Starting from a joke 问:把大象放冰箱里,分几步? 答:三步啊,第一.把冰箱门打开,第二.把大象放进去,第三.把冰箱门带上. 问:实现Spring事务,分几步? 答:三步啊,第一. ...

  6. IDEA添加自动注释(类注释及方法注释)

    IDEA添加自动注释 一.添加类自动注释 二.添加类方法自动注释 一.添加类自动注释 左上角选择 File -> Settings -> Editor -> File and Cod ...

  7. 在SpringBoot启动类上添加ComponentScan出现springbootapplication already applies given @ComponentScan

    查看@SpringBootApplication注解源码,可以看到 @SpringBootApplication=@Configuration+@EnableAutoConfiguration+@Co ...

  8. 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 @Mixin 注解进行方法注入 | Mixin 混合多个类优先级分析 )

    文章目录 一.使用 Mixin 混合进行方法注入 二.Mixin 混合多个类优先级分析 一.使用 Mixin 混合进行方法注入 在上一篇博客 [Groovy]MOP 元对象协议与元编程 ( 方法注入 ...

  9. MFC类向导添加自定义消息未声明标识符的解决方法

    MFC添加自定义消息步骤: 1.在要添加的窗口调出类向导, 这样会生成函数但是会提示 解决方法:在头文件里添加定义 #define WM_FileInformation WM_USER+2 如果还需要 ...

最新文章

  1. 4、变量和方法被static和final两个关键字修饰,为什么这么做?
  2. loadrunner 关联匹配多个值
  3. java连接mysql 不推荐_java连接mysql
  4. 属性被分为八大类不包括_Python语言---私有属性
  5. opencv配置_Opencv在vs2012下的配置
  6. python绘制3d机械图_使用python绘制3d的图形
  7. java flask_将Java与Python Flask连接
  8. Promise基本概念和基本示例使用
  9. python实现滚动截屏功能
  10. oracle xdb xquery,XML DB与XDB是同一个东西吗?
  11. Python学习002—python的安装以及pip
  12. 非洲做项目的务实与务虚
  13. Win键失效,Win+L不起作用了
  14. 感谢所有的幸运与不幸 --- 致我的2016
  15. 网站被qq拦截应该怎么处理
  16. 基于uni-app手机端后台管理系统uni-uadmin
  17. GCF(4)----手机认证相关知识
  18. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十四 ║ VUE 计划书 我的前后端开发简史...
  19. python3.7的IDEL怎么清屏
  20. 一篇文章轻松学会python装饰器

热门文章

  1. 为什么推荐做印尼tiktok?
  2. 如何安装mysql5.7.15_ubuntu16.04安装mysql5.7.15
  3. Leetcode每日一题:925.Long Pressed Name(长按键入)
  4. ROS入门-2.Linux系统基础操作
  5. Anaconda安装过程中出现InvalidArchiveError
  6. 机器学习-吴恩达-笔记-11-异常检测
  7. iOS Coding Style Guide 代码规范
  8. Redis info信息(转载)
  9. 上deepweb难吗_发动机保养难?傲群除尘毛刷用上了吗
  10. python语言指令大全_Python语言----linux常用命令(14)