导致Spring事务失效的原因有哪些?

开发 架构
下面给大家总结一下,导致Spring事务失效的原因主要有以下8个。

​一位2年工作经验的小伙伴被问到这样一道面试题,说请你谈谈导致Spring事务失效的原因有哪些?

今天,我给大家分享一下我的理解。

下面给大家总结一下,导致Spring事务失效的原因主要有以下8个:

图片

1、方法没有被public修饰

在开发过程中,如果@Transactional事务注解添加在不是public修饰的方法上,这个时候,Spring的事务就会失效。

图片

2、类没有被Spring托管

如果事务方法所在的类没有加载到Spring IoC容器中,也就是说,事务方法所在的类没有被Spring管理,从而导致Spring无法实现代理,所以,Spring事务也会失效。

图片

3、不正确的异常捕获

如果事务方法抛出异常被 catch 处理了,导致 @Transactional 无法回滚而导致事务失效。

图片

4、同一类中方法调用

如果同一个类中的两个方法分别为A和B,方法A上没有添加事务注解,方法B上添加了 @Transactional事务注解,方法A调用方法B,那么,方法B的事务会失效。

图片

5、propagation事务传播行为配置错误

如果内部方法的事务传播类型为不支持事务的传播类型,那么,内部方法的事务在Spring中会失效。

图片

6、rollbackFor参数设置错误

如果在@Transactional注解中rollbackFor参数标注了错误的异常类型,那么,Spring事务的回滚就无法识别,导致事务回滚失效。

图片

7、没有配置事务管理器

即使在代码中使用了Spring的事务管理的功能,但是在项目中,如果没有配置Spring的事务管理器,Spring的事务也不会生效。

图片

8、数据库本身不支持事务

Spring事务生效的前提是所连接的数据库要支持事务,如果底层的数据库都不支持事务,那么,Spring的事务肯定会失效。例如,如果使用的数据库为MySQL,并且选用了MyISAM存储引擎,则Spring的事务就会失效。

以上就是我对Spring事务失效原因的理解。

责任编辑:姜华 来源: Tom弹架构
相关推荐

2022-08-27 14:14:06

Spring事务开发

2021-12-13 11:12:41

Spring事务失效

2022-02-14 16:53:57

Spring项目数据库

2020-11-12 19:30:37

Spring失效事务

2021-04-15 08:01:27

Spring声明式事务

2022-12-06 10:39:43

Spring事务失效

2022-04-13 20:53:15

Spring事务管理

2022-07-05 14:19:30

Spring接口CGLIB

2022-09-14 19:50:22

事务场景流程

2024-01-29 08:28:01

Spring事务失效

2024-09-09 08:29:25

2022-05-11 07:41:55

死锁运算线程

2019-08-26 09:15:09

设计技术人生第一份工作

2021-09-04 07:56:44

Spring事务失效

2023-07-05 08:45:18

Spring事务失效场景

2024-01-05 14:20:55

MySQL索引优化器

2023-05-26 07:19:49

Spring声明式事务

2010-05-05 09:33:46

Oracle事务

2023-03-09 07:13:40

数字化转型交付

2010-06-18 12:37:04

SQL Server查
点赞
收藏

51CTO技术栈公众号