观书散遗帙,探古穷至妙。这篇文章主要讲述盘点spring事务失效的情况相关的知识,希望能为你提供帮助。
@[TOC]
盘点spring事务失效的情况spring事务失效也是一个老生常谈的话题,也是工作中经常会遇到的情况,那么在什么情况下spring的事务会失效呢?在这里我简单罗列一下相关的情景
bean对象没有被spring管理
当这个类的bean对象没有受到spring容器管理的时候,显然事务会不起作用
定义的方法不是public修饰符
如果我们写的有关事务的方法不是public修饰符的话,事务同样会失效,但是这种情况遇到的较少,因为我们在开发过程中一般都是public
数据源没有配置事务管理器
也就是项目中是否开启了事务,没有开启事务显然事务不起作用
数据库本身不支持事务
这个问题也是有可能遇到的,例如数据库是mysql的Myisam引擎的话,显然是不支持事务的
异常被捕捉了
如果异常被捕捉了,会认为程序不会出错,也就不会发生回滚操作
自身调用问题
这种情况也是十分常见的,也就是说a方法中调用了b方法,a方法调用b方法是通过this对象来调用的,这是原始对象而不是代理对象,b方法之所以能具有事务的能力是spring的aop生成了代理对象,通过代理对象调用方法,而通过原始对象调用会导致事务失效。
异常类型配置有问题
大家都知道@Transactional可以配置rollbackFor,如果抛出的是不是rollbackFor指定的异常信息,同样也会导致失效。
总结
【盘点spring事务失效的情况】对于spring事务失效的几种情况我简单罗列了一下:bean对象没有被spring管理,定义的方法不是public修饰符,数据源没有配置事务管理器,数据库本身不支持事务,异常被捕捉了,自身调用问题,异常类型配置有问题等等,注意好这些事项,事务就不会失效啦
推荐阅读
- 掌握这五点建议,Linux学习不再难
- BGP初步配置实验
- 基于智能数据库的自助式机器学习
- electron学习笔记如何在electron集成截屏功能()
- Shell编程及自动化运维流程控制(if)
- 基于Spark+Grafana可视化电商项目实战,好文收藏~
- Hive跨集群和版本迁移
- 小案例--python编写设置拼手气红包模块
- 要想用活Redis,Lua脚本是绕不过去的坎 !