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 ...
随机推荐
- 050_Dos命令
目录 Dos命令 打开Dos控制台 管理员方式运行 常用的Dos命令 Dos命令 打开Dos控制台 开始->附件->命令提示符 Window+R 输入cmd(推荐使用) 在任意文件夹下-& ...
- 教师专用录微课及剪辑软件推荐-camtasia中文汉化破解版免费下载及使用教程
教师专用录微课软件,微课制作软件是一款能够制作文字.图形.动画.音视频等的软件,支持对ppt.word.flash的导入和录制,实时同步录制操作区文字.图形.动画.音视频.鼠标轨迹.声音及外部语音等动 ...
- Linux部署常用命令
1../startup.sh 开启tomcat服务 2.rm -f file1 删除文件 3.rmdir dir xxx 删除目录 4.Tab按钮 自动补全文件名称功能 5.gzip file1 ...
- Triple的使用
public Triple<Long, Long, Double> getCarRunSummary(String did, Date startDate, Date endDate) { ...
- Luogu P4105 [HEOI2014]南园满地堆轻絮
题解 传送门 其实只要找差距最大的逆序对就好了 答案就是此逆序对的差 /2 代码 (代码很短) #include<bits/stdc++.h> using namespace std; # ...
- python栈、队列、文件目录遍历
一. 栈与队列 关注公众号"轻松学编程"了解更多. 1. 栈 stack 特点:先进先出[可以抽象成竹筒中的豆子,先进去的后出来] 后来者居上 mystack = [] #压栈[向 ...
- .NET redis 客户端开源组件 FreeRedis (继 CSRedisCore 之后重写)
什么是 FreeRedis FreeRedis 是一款 .NET redis 客户端开源组件,以 MIT 协议开源托管于 github,目前支持 .NET 5..NETCore 2.1+..NETFr ...
- Redis基础—了解Redis是如何做数据持久化的
之前的文章介绍了Redis的简单数据结构的相关使用和底层原理,这篇文章我们就来聊一下Redis应该如何保证高可用. 数据持久化 我们知道虽然单机的Redis虽然性能十分的出色, 单机能够扛住10w的Q ...
- .net 实现之短信验证码
接口类型:互亿无线触发短信接口,支持发送验证码短信.订单通知短信等. 账户注册:请通过该地址开通账户http://sms.ihuyi.com/register.html 只能测试用: 实现注册页面 & ...
- 云计算之路-出海记:命令行下的 AWS
俗话说"三百六十行,行行出状元",自从有了电脑之后,三百六十行又多了一行 -- 命令行.GUI 的诞生开创了繁荣的 PC "窗口"(windows)时代,互联网 ...