问题365网经验知识百科全书!

spring事务失效的一些场景

0次浏览 | 2023-04-08 11:18:04
来源 :daniel
1、 @Transactional 只能作用在public修饰的方法上

spring事务的实现AbstractFallbackTransactionAttributeSource类的computeTransactionAttribute方法中有个判断,如果目标方法不是public,则TransactionAttribute返回null,即不支持事务。

2、方法用final修饰

这样的话会导致事务的失效,因为spring事务底层实现使用了代理,aop,通过jdk的动态代理或者cglib,生成了代理类,在代理类中实现了事务功能,如果方法被final修饰,无法重写该方法,也就无法添加事务的功能了

3、方法内部调用 同一个service中 A方法调用B方法。如果两个方法都写了@Transactional,B方法发生异常, AB都会回滚。同一个service中 A方法调用B方法。A方法没有加@Transactional,B方法加了@Transactional,B方法发生异常,AB都不会回滚。同一个service中 A方法调用B方法。A方法加@Transactional,B方法没有加@Transactional,B方法发生异常,AB都会回滚。

下图为例子:
A方法即orderTest
B方法即createOrder()
然后在B方法当中制造一个异常,int count = 1/0,进行测试。

4、多线程调用

情形一:AB两个service

Aservice中的a方法调用 Bservice中的b方法,a、b方法都加了@Transactional,b方法发生异常,a不会回滚,b会回滚。Aservice中的a方法调用 Bservice中的b方法,a方法没有加@Transactional,b方法加了@Transactional, b方法发生异常,a不会回滚,b会回滚。Aservice中的a方法调用 Bservice中的b方法,a方法加@Transactional,b方法没有加@Transactional, b方法发生异常,a、b都不会回滚。

下图为例子:

情形二:同一个service

同一个service中 a方法调用b方法,a、b方法都加了@Transactional, b方法发生异常,a、b都不会回滚。同一个service中 a方法调用b方法,a方法没有加@Transactional, b方法加了@Transactional,b方法发生异常,a、b都不会回滚。同一个service中 a方法调用b方法,a方法加@Transactional, b方法没有加@Transactional,b方法发生异常,a、b都不会回滚。

下图为例子:

5、数据库引擎是MyISAM的话也是不支持事务的。 6 try catch手动捕获异常

这种情况也是分两种。
第一种捕获了异常,但是没有throw,是不会回滚的。

下图为例子:

第二种捕获了异常,并且throw了异常,会回滚。
但是这个throw的异常,必须是运行时异常才可以。
@Transcation 默认只回滚 (JVM级别)抛出RuntimeException 及Error异常的事务

下图为例子:

参考文章:https://www.jb51.net/article/256104.htm

电脑键盘属于哪类垃圾
一般来说电脑键盘是属于可回收的垃圾,由于它的主要材质是塑料制品,而类似于纸类、硬纸板、玻璃、塑料、金属、塑料包装等物品都属于可回收的垃圾,主要是为了增加材料的利用总体
Android中WebView使用LoadUrl不刷新网页的问题,网址带#只能通过reload刷新
文章目录 项目场景:问题描述原因分析结论参考材料 可以直接快进到结论部分 项目场景: 最近在和其他公司沟通联调H5的时候,意外发现对方发过来的地址可以加载,但是没有办法正
spring事务失效的一些场景
1、 @Transactional 只能作用在public修饰的方法上 spring事务的实现AbstractFallbackTransactionAttributeSource类的computeTransactionAttribute方法中有个判断,如果目
zookeeper-3.6.3安装
zookeeper 安装 1、xftp上传zookeeper压缩包并解压 cd /opt/softlstar -zxvf apache-zookeeper-3.6.3-bin.tar.gzmv apache-zookeeper-3.6.3-bin soft/zookeeper363 2

点击排行

1
电脑键盘属于哪类垃圾
电脑键盘属于哪类垃圾
一般来说电脑键盘是属于可回收的垃圾,由于它的主要材质是塑料制品,而类似于纸类、硬纸板、玻璃、塑料、金属、塑料包装等物品都属于可回收的垃圾,主要是为了增加材料的利用总体[+]
369问题网
免责声明:问题365网所有文字、图片、视频、音频等资料均来自互联网,不代表本站赞同其观点,内容仅代表作者本人意见,若因此产生任何纠纷作者本人负责,本站亦不为其版权负责! 如有问题,请联系我们
CopyRight©1999-2022 www.wt369.net/ All Right Reserved