导致Spring事务失效的原因有哪些?
一位2年工作经验的小伙伴被问到这样一道面试题,说请你谈谈导致Spring事务失效的原因有哪些?
今天,我给大家分享一下我的理解。
下面给大家总结一下,导致Spring事务失效的原因主要有以下8个:
ENTER TITLE
1、方法没有被public修饰
在开发过程中,如果@Transactional事务注解添加在不是public修饰的方法上,这个时候,Spring的事务就会失效。
ENTER TITLE
2、类没有被Spring托管
如果事务方法所在的类没有加载到Spring IoC容器中,也就是说,事务方法所在的类没有被Spring管理,从而导致Spring无法实现代理,所以,Spring事务也会失效。
ENTER TITLE
3、不正确的异常捕获
如果事务方法抛出异常被 catch 处理了,导致 @Transactional 无法回滚而导致事务失效。
ENTER TITLE
4、同一类中方法调用
如果同一个类中的两个方法分别为A和B,方法A上没有添加事务注解,方法B上添加了 @Transactional事务注解,方法A调用方法B,那么,方法B的事务会失效。
ENTER TITLE
5、propagation事务传播行为配置错误
如果内部方法的事务传播类型为不支持事务的传播类型,那么,内部方法的事务在Spring中会失效。
ENTER TITLE
6、rollbackFor参数设置错误。
如果在@Transactional注解中rollbackFor参数标注了错误的异常类型,那么,Spring事务的回滚就无法识别,导致事务回滚失效。
ENTER TITLE
7、没有配置事务管理器
即使在代码中使用了Spring的事务管理的功能,但是在项目中,如果没有配置Spring的事务管理器,Spring的事务也不会生效。
ENTER TITLE
8、数据库本身不支持事务
Spring事务生效的前提是所连接的数据库要支持事务,如果底层的数据库都不支持事务,那么,Spring的事务肯定会失效。例如,如果使用的数据库为MySQL,并且选用了MyISAM存储引擎,则Spring的事务就会失效。
以上就是我对Spring事务失效原因的理解。
我是被编程耽误的文艺Tom,如果我的分享对你有帮助,请动动手指分享给更多的人。
相关文章
- 深入理解 Spring 事务:入门、使用、原理
- Spring学习笔记(五)——JdbcTemplate和spring中声明式事务
- 将 Bean 放入 Spring 容器中的五种方式 !
- 面试突击84:Spring 有几种事务隔离级别?
- Spring事务隔离级别与数据库隔离级别不一致时,该以谁为准?
- 重试框架 Spring-Retry 和 Guava-Retry,你知道该怎么选吗?
- Spring-依赖注入IOC
- Spring MVC框架:第十章:拦截器
- 理论:第二章:Spring的AOP和IOC是什么?使用场景有哪些?Spring事务与数据库事务,传播行为,数据库隔离级别
- 关于Spring事务及其传播机制
- spring事务回滚机制_事务回滚失败
- 分布式事务saga开源实现_spring分布式事务解决方案
- 关于spring事务你需要知道的知识点
- Spring的事务我是这么玩的
- rabbitMQ结合spring-boot使用(2).md
- 理论:第二章:Spring的AOP和IOC是什么?使用场景有哪些?Spring事务与数据库事务,传播行为,数据库隔离级别
- Spring Cloud Gateway网关安全性的保障(一)
- 使用 Spring Security 进行基本的 HTTP 认证和授权(一)
- 重写spring读取配置文件,读取加密配置文件详解编程语言
- Spring的构造函数注入简单案例详解编程语言
- spring事务配置详解编程语言
- Spring事务的传播特性详解编程语言
- spring整合mybatis(hibernate)配置详解编程语言
- 春日之城:使用Neo4j进行图数据库管理(spring neo4j)
- Spring框架致力于搭建基于MSSQL的稳健开发体系(spring mssql)