spring中的事务传播机制
1、事务的实现思想
在spring中要想某个方法具有事务,只要在方法前加一个@Transactional注解。然后spring就会利用aop思想,在这个方法执行前开启事务,
在方法执行后选择提交事务或者回滚事务。
2、7种事务传播机制
1 @Transactional(propagation = Propagation.REQUIRED)
2 public void A(){
3 //doSomething
B();
//doSomething
4 }
5
6 @Transactional(propagation = ?)
7 public void B(){
8 //doSomething
9 }
1、REQUIRED:
spring默认事务,如果当前没有事务就创建一个事务,如果当前有事务就当入该事务。如果此时B设置为REQUIRED,A调用B后B中的代码会加入A中的事务,一起回滚或提交。
2、SUPPORTS:
有事务就按有事务执行,没有事务就以非事务方式执行。如果此时B设置为SUPPORTS,单独调用B会以非事务的方式执行,A调用B是,B中的代码会加入A中的事务。
3、MANDATORY:
必须要有事务,如果没有事务就会报错。如果B设置为MANDATORY,单独调用B会报错,A调用B时,B中的代码会加入A中的事务,一起回滚或提交。
4:REQUIRES_NEW:
不管有没有事务都会创建一个新的事务。如果B设置为REQUIRES_NEW,单独调用B会创建事务,A调用B时,B也会创建一个新事务t2,A事务t1和t2互不影响,各自提交回滚自己的事务。
5、NOT_SUPPORTED:
不支持事务,如果有事务就会把事务挂起。如果B设置为NOT_SUPPORTED,单独调用B没有事务,A调用B时,运行到B中代码时,会把事务挂去。
6、NEVER:
不支持事务,如果有事务就会报错。如果B设置为NEVER,单独调用B没有事务,A调用B时会报错。
7、NESTED:
嵌套事务,当前有事务时就嵌套执行事务,当前没有事务时就按REQUIRED属性执行。如果B设置为NESTED,单独调用B会创建一个事务。A调用B时,B会创建一个回滚点,B中代码
抛出异常时会回滚到这个回滚点,A中的代码可以继续往下执行,但是A中代码出异常后会连带着B一起回滚。
spring中的事务传播机制的更多相关文章
- Spring中的事务传播行为
Spring在TransactionDefinition接口中定义了7种类型的事务传播行为,它们规定了事务方法是怎样传播的. PROPAGATION_REQUIRED(最经常使用!):支持当前事务,假 ...
- 面试官:说说Spring中的事务传播行为
前言 在开发中,相信大家都使用过Spring的事务管理功能.那么,你是否有了解过,Spring的事务传播行为呢? Spring中,有7种类型的事务传播行为.事务传播行为是Spring框架提供的一种事务 ...
- Spring中的事务传播行为与隔离级别
事务传播行为 事务传播行为(为了解决业务层方法之间互相调用的事务问题): 当事务方法被另一个事务方法调用时,必须指定事务应该如何传播.例如:方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己 ...
- 【原创】spring中的事务传播特性
关于spring的传播特性,我对其进行了详细的叙述了下: PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务.这是最常见的选择. 比如方法A调用方法B,如果方法 ...
- -手写Spring注解版本&事务传播行为
视频参考C:\Users\Administrator\Desktop\蚂蚁3期\[www.zxit8.com] 0018-(每特教育&每特学院&蚂蚁课堂)-3期-源码分析-手写Spri ...
- spring事务传播机制实例讲解
http://kingj.iteye.com/blog/1680350 spring事务传播机制实例讲解 博客分类: spring java历险 天温习spring的事务处理机制,总结 ...
- Spring事务传播机制
Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播,即协调已经有事务标识的方法之间的发生调用时的事务 ...
- Spring事务传播机制和数据库隔离级别
Spring事务传播机制和数据库隔离级别 转载 2010年06月26日 10:52:00 标签: spring / 数据库 / exception / token / transactions / s ...
- spring 事务传播机制
spring 事务 传播机制 描述的 事务方法直接相互调用,父子事物开启,挂起,回滚 等的处理方式. 绿色的 那几个 我认为比较重要. 1 , @Transactional(propagation=P ...
随机推荐
- tomcat 登录主页成功 点击Manager App 401 等问题
1.将项目部署在tomcat的安装路径webapps下(如果报404,查下该应用是否在tomcat的webapps下部署着) 2.启动tomcat成功,http://127.0.0.1:8080成功, ...
- ScheduledExecutor定时器
为了弥补Timer 的上述缺陷,在Java 5的时候推出了基于线程池设计的 ScheduledExecutor.其设计思想是:每一个被调度的任务都会由线程池中一个线程去执行,因此任务是并发执行的,相互 ...
- 前端-jstree 一些常用功能
最近使用到了jstree(v3.3.4)这个插件(官网:https://www.jstree.com/),在这里记录下我的使用过程的一些技巧和问题. 1. 获取数据 一般实际项目中用到的数据都是aja ...
- 【转】Setting up SDL Extension Libraries on Visual Studio 2010 Ultimate
FROM:http://lazyfoo.net/tutorials/SDL/06_extension_libraries_and_loading_other_image_formats/windows ...
- Reading Face, Read Health论文阅读笔记
摘要: 随着计算技术觉.人工智能和移动技术的发展,利用计算机读脸技术去识别每个人每天的健康是可行的.怎么去设计一个基于FRT(face reading technologies)的用于得到每天的保健实 ...
- Java到处运行的基础之 Class 文件
Java 实现一次编译到处运行的基础,来源于 Java 虚拟机屏蔽了操作系统的底层细节.使用 class 文件存储编译后的源程序,使得 Java 程序的编译与操作系统解耦.正是因为 Java clas ...
- Java学习的第三十三天
1.今天复习了第十二章的12.1的文件和12.2一直到12.2.4 2.没有问题 3.明天继续复习
- 删除指定路径下指定天数之前(以文件的创建日期为准)的文件:BAT + REG + Ritchie Lawrence 日期函数
代码如下: @echo off::演示:删除指定路径下指定天数之前(以文件的创建日期为准)的文件.::如果演示结果无误,把del前面的echo去掉,即可实现真正删除.::本例调用了 Ritchie L ...
- python机器学习TensorFlow框架
TensorFlow框架 关注公众号"轻松学编程"了解更多. 一.简介 TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运 ...
- python爬虫使用xpath解析页面和提取数据
XPath解析页面和提取数据 一.简介 关注公众号"轻松学编程"了解更多. XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言.X ...