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中的事务传播机制的更多相关文章

  1. Spring中的事务传播行为

    Spring在TransactionDefinition接口中定义了7种类型的事务传播行为,它们规定了事务方法是怎样传播的. PROPAGATION_REQUIRED(最经常使用!):支持当前事务,假 ...

  2. 面试官:说说Spring中的事务传播行为

    前言 在开发中,相信大家都使用过Spring的事务管理功能.那么,你是否有了解过,Spring的事务传播行为呢? Spring中,有7种类型的事务传播行为.事务传播行为是Spring框架提供的一种事务 ...

  3. Spring中的事务传播行为与隔离级别

    事务传播行为 事务传播行为(为了解决业务层方法之间互相调用的事务问题): 当事务方法被另一个事务方法调用时,必须指定事务应该如何传播.例如:方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己 ...

  4. 【原创】spring中的事务传播特性

    关于spring的传播特性,我对其进行了详细的叙述了下: PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务.这是最常见的选择. 比如方法A调用方法B,如果方法 ...

  5. -手写Spring注解版本&事务传播行为

    视频参考C:\Users\Administrator\Desktop\蚂蚁3期\[www.zxit8.com] 0018-(每特教育&每特学院&蚂蚁课堂)-3期-源码分析-手写Spri ...

  6. spring事务传播机制实例讲解

    http://kingj.iteye.com/blog/1680350   spring事务传播机制实例讲解 博客分类:   spring java历险     天温习spring的事务处理机制,总结 ...

  7. Spring事务传播机制

    Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播,即协调已经有事务标识的方法之间的发生调用时的事务 ...

  8. Spring事务传播机制和数据库隔离级别

    Spring事务传播机制和数据库隔离级别 转载 2010年06月26日 10:52:00 标签: spring / 数据库 / exception / token / transactions / s ...

  9. spring 事务传播机制

    spring 事务 传播机制 描述的 事务方法直接相互调用,父子事物开启,挂起,回滚 等的处理方式. 绿色的 那几个 我认为比较重要. 1 , @Transactional(propagation=P ...

随机推荐

  1. 050_Dos命令

    目录 Dos命令 打开Dos控制台 管理员方式运行 常用的Dos命令 Dos命令 打开Dos控制台 开始->附件->命令提示符 Window+R 输入cmd(推荐使用) 在任意文件夹下-& ...

  2. 教师专用录微课及剪辑软件推荐-camtasia中文汉化破解版免费下载及使用教程

    教师专用录微课软件,微课制作软件是一款能够制作文字.图形.动画.音视频等的软件,支持对ppt.word.flash的导入和录制,实时同步录制操作区文字.图形.动画.音视频.鼠标轨迹.声音及外部语音等动 ...

  3. Linux部署常用命令

    1../startup.sh 开启tomcat服务 2.rm -f file1  删除文件 3.rmdir dir xxx 删除目录 4.Tab按钮 自动补全文件名称功能 5.gzip file1  ...

  4. Triple的使用

    public Triple<Long, Long, Double> getCarRunSummary(String did, Date startDate, Date endDate) { ...

  5. Luogu P4105 [HEOI2014]南园满地堆轻絮

    题解 传送门 其实只要找差距最大的逆序对就好了 答案就是此逆序对的差 /2 代码 (代码很短) #include<bits/stdc++.h> using namespace std; # ...

  6. python栈、队列、文件目录遍历

    一. 栈与队列 关注公众号"轻松学编程"了解更多. 1. 栈 stack 特点:先进先出[可以抽象成竹筒中的豆子,先进去的后出来] 后来者居上 mystack = [] #压栈[向 ...

  7. .NET redis 客户端开源组件 FreeRedis (继 CSRedisCore 之后重写)

    什么是 FreeRedis FreeRedis 是一款 .NET redis 客户端开源组件,以 MIT 协议开源托管于 github,目前支持 .NET 5..NETCore 2.1+..NETFr ...

  8. Redis基础—了解Redis是如何做数据持久化的

    之前的文章介绍了Redis的简单数据结构的相关使用和底层原理,这篇文章我们就来聊一下Redis应该如何保证高可用. 数据持久化 我们知道虽然单机的Redis虽然性能十分的出色, 单机能够扛住10w的Q ...

  9. .net 实现之短信验证码

    接口类型:互亿无线触发短信接口,支持发送验证码短信.订单通知短信等. 账户注册:请通过该地址开通账户http://sms.ihuyi.com/register.html 只能测试用: 实现注册页面 & ...

  10. 云计算之路-出海记:命令行下的 AWS

    俗话说"三百六十行,行行出状元",自从有了电脑之后,三百六十行又多了一行 -- 命令行.GUI 的诞生开创了繁荣的 PC "窗口"(windows)时代,互联网 ...