Spring事务控制和传递性理解
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事务控制和传递性理解相关推荐
- Spring-学习笔记10【Spring事务控制】
Java后端 学习路线 笔记汇总表[黑马程序员] Spring-学习笔记01[Spring框架简介][day01] Spring-学习笔记02[程序间耦合] Spring-学习笔记03[Spring的 ...
- Spring——DAO层、Spring JDBC、Spring事务控制
目录 一.Spring对持久层技术支持 1.Spring支持的持久层技术 2.Spring JDBC 2.1. JDBCTemplate类 2.2.Spring JDBC CRUD操作 2.3.Spr ...
- 京东电话面:说说你对Spring事务传播属性的理解?
点击上方蓝色"java大数据修炼之道", 选择"设为星标" 每晚九点: 技术干货 ???? 必定奉上哈喽,各位新来的小伙伴们,大家好!由于公众号做了改版,为了保 ...
- 太难了~面试官让我结合案例讲讲自己对Spring事务传播行为的理解!
摘要: 原创出处 sf.gg/a/1190000013341344 「handaqiang」欢迎转载,保留摘要,谢谢! 前言 基础概念 1. 什么是事务传播行为? 2. Spring 中七种事务传播行 ...
- spring 事务控制 设置手动回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
如上: 当我们需要在事务控制的service层类中使用try catch 去捕获异常后,就会使事务控制失效,因为该类的异常并没有抛出,就不是触发事务管理机制.怎样才能即使用try catch去捕获异常 ...
- spring—事务控制
编程式事务控制相关对象 PlatformTransactionManager PlatformTransactionManager 接口是 spring 的事务管理器,它里面提供了我们常用的操作事务的 ...
- 关于Spring事务tx:annotation-driven/的理解(Controller可以使用@Transactional)
在使用SpringMvc的时候,配置文件中我们经常看到 annotation-driven 这样的注解,其含义就是支持注解,一般根据前缀 tx.mvc 等也能很直白的理解出来分别的作用.<tx: ...
- Spring 事务传播行为的理解
https://blog.csdn.net/qq_39720208/article/details/108766761
- Spring : Spring 事务控制 设置手动回滚 TransactionAspectSupport
1.美图 2.概述 //假设这是一个service类的片段try{ //出现异常 } catch (Exception e) {e.printStackTrace()
最新文章
- 3个最常用的分类模型评估指标!
- Harbor2.2.1配置(trivy扫描器、镜像签名)
- 最大团问题-分支界限法
- 全面工作总结的写作技巧和写作要点
- Python可视化库Matplotlib绘图入门详解
- 如何理解 Linux 中的 load averages
- mysql 5.7.25 的安装与 安装错误修改 适用于5.7解压版
- 开源开放 | 开源大学在线实践数据集及知识图谱MOOPer(CCKS2021)
- python抓取数据包_利用python-pypcap抓取带VLAN标签的数据包方法
- Qfarm /load命令
- sql sum求和 值小于不显示_mysql中sum求和等类似方法关于null值的处理
- 软件开发生命周期来说明不同的测试的使用情况
- 超宽带 DWM1000模块 简介
- 武汉大学计算机学院电子与通信工程,武汉大学电子信息学院信息与通信工程
- 建筑建模学习笔记3——Vray渲染及PS修图
- openssl生成RSA格式及pkcs1与pkcs8格式互相转换
- 有人对你说辛苦了要怎么回复
- OSChina 周三乱弹 ——猫和铲屎官总要疯一个
- EEPROM存储芯片24C02
- iOS开发系列-音频、视频以及摄像