1、在同一类方法间相互调用,如果调用方无事务控制,被调用方有事务控制,则被调用方也无事务

原因:外部经过spring容器调用service的方法事务才生效,service类内部方法间相互调用事务不生效,也就是传说中的自调用失效问题。主要原因是 Spring数据库事务的约定,其实现原理是AOP,而AOP的原理是动态代理,在自调用的过程中,是类自身的调用,而不是代理对象去调用,那么就不会产生AOP,这样 Spring就不能把你的代码织入到约定的流程中,于是就产生了现在看到的失败场景。

2、默认事务传递性)事务控制A调用事务控制B,如果B抛异常,A处理异常,则整个事务会回滚,同时报错Transaction rolled back because it has been arked as rollback-only

 如图所示:箭头表示的2个方法都有事务,外面的事务捕获了里面的事务

原因:事务的传递性,因为A调用B,所以A和B都是同一个事务对象,B使用A的事务对象,成为一个整理,B抛异常已经将事务对象设值为需回滚状态(RollbackOnly)了,除非B中直接处理异常,当外层事务处理异常想提交整个事务时,出现异常Transaction rolled back because it has been arked as rollback-only

3、事务控制的方法中异步线是没有事务控制的

转载于:https://www.cnblogs.com/onlymate/p/10722591.html

Spring事务控制和传递性理解相关推荐

  1. Spring-学习笔记10【Spring事务控制】

    Java后端 学习路线 笔记汇总表[黑马程序员] Spring-学习笔记01[Spring框架简介][day01] Spring-学习笔记02[程序间耦合] Spring-学习笔记03[Spring的 ...

  2. Spring——DAO层、Spring JDBC、Spring事务控制

    目录 一.Spring对持久层技术支持 1.Spring支持的持久层技术 2.Spring JDBC 2.1. JDBCTemplate类 2.2.Spring JDBC CRUD操作 2.3.Spr ...

  3. 京东电话面:说说你对Spring事务传播属性的理解?

    点击上方蓝色"java大数据修炼之道", 选择"设为星标" 每晚九点: 技术干货 ???? 必定奉上哈喽,各位新来的小伙伴们,大家好!由于公众号做了改版,为了保 ...

  4. 太难了~面试官让我结合案例讲讲自己对Spring事务传播行为的理解!

    摘要: 原创出处 sf.gg/a/1190000013341344 「handaqiang」欢迎转载,保留摘要,谢谢! 前言 基础概念 1. 什么是事务传播行为? 2. Spring 中七种事务传播行 ...

  5. spring 事务控制 设置手动回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

    如上: 当我们需要在事务控制的service层类中使用try catch 去捕获异常后,就会使事务控制失效,因为该类的异常并没有抛出,就不是触发事务管理机制.怎样才能即使用try catch去捕获异常 ...

  6. spring—事务控制

    编程式事务控制相关对象 PlatformTransactionManager PlatformTransactionManager 接口是 spring 的事务管理器,它里面提供了我们常用的操作事务的 ...

  7. 关于Spring事务tx:annotation-driven/的理解(Controller可以使用@Transactional)

    在使用SpringMvc的时候,配置文件中我们经常看到 annotation-driven 这样的注解,其含义就是支持注解,一般根据前缀 tx.mvc 等也能很直白的理解出来分别的作用.<tx: ...

  8. Spring 事务传播行为的理解

    https://blog.csdn.net/qq_39720208/article/details/108766761

  9. Spring : Spring 事务控制 设置手动回滚 TransactionAspectSupport

    1.美图 2.概述 //假设这是一个service类的片段try{ //出现异常 } catch (Exception e) {e.printStackTrace()

最新文章

  1. 3个最常用的分类模型评估指标!
  2. Harbor2.2.1配置(trivy扫描器、镜像签名)
  3. 最大团问题-分支界限法
  4. 全面工作总结的写作技巧和写作要点
  5. Python可视化库Matplotlib绘图入门详解
  6. 如何理解 Linux 中的 load averages
  7. mysql 5.7.25 的安装与 安装错误修改 适用于5.7解压版
  8. 开源开放 | 开源大学在线实践数据集及知识图谱MOOPer(CCKS2021)
  9. python抓取数据包_利用python-pypcap抓取带VLAN标签的数据包方法
  10. Qfarm /load命令
  11. sql sum求和 值小于不显示_mysql中sum求和等类似方法关于null值的处理
  12. 软件开发生命周期来说明不同的测试的使用情况
  13. 超宽带 DWM1000模块 简介
  14. 武汉大学计算机学院电子与通信工程,武汉大学电子信息学院信息与通信工程
  15. 建筑建模学习笔记3——Vray渲染及PS修图
  16. openssl生成RSA格式及pkcs1与pkcs8格式互相转换
  17. 有人对你说辛苦了要怎么回复
  18. OSChina 周三乱弹 ——猫和铲屎官总要疯一个
  19. EEPROM存储芯片24C02
  20. iOS开发系列-音频、视频以及摄像

热门文章

  1. ddd架构 无法重构_DDD有什么用?
  2. solidity 合约权限授权_智能合约的调配模式:如何让你的智能合约安全协作?
  3. SQLSERVER远程备份
  4. java map的应用_JAVA map的简单应用
  5. 简单介绍WaitForSingleObject / WaitForMultipleObjects
  6. HAProxy.md
  7. day 029 缓冲区和粘包 day 30 粘包的解决
  8. ansible笔记(8):常用模块之系统类模块(二)
  9. 对于 Redux 的理解
  10. 程序员面试强行用代码画画被骂,20分钟后面试官闭嘴了