3

盘点spring事务失效的情况

 2 years ago
source link: https://blog.51cto.com/u_15460453/5330829
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

盘点spring事务失效的情况

原创

周杰伦本人 2022-05-25 15:48:11 ©著作权

文章标签 spring 修饰符 数据库 文章分类 Java 编程语言 阅读数231

Table of Contents

盘点spring事务失效的情况

大家好 我是周杰伦本人 欢迎关注我❤️,点赞👍🏻,评论🤤,转发🙏

spring事务失效也是一个老生常谈的话题,也是工作中经常会遇到的情况,那么在什么情况下spring的事务会失效呢?在这里我简单罗列一下相关的情景

bean对象没有被spring管理

当这个类的bean对象没有受到spring容器管理的时候,显然事务会不起作用

定义的方法不是public修饰符

如果我们写的有关事务的方法不是public修饰符的话,事务同样会失效,但是这种情况遇到的较少,因为我们在开发过程中一般都是public

数据源没有配置事务管理器

也就是项目中是否开启了事务,没有开启事务显然事务不起作用

数据库本身不支持事务

这个问题也是有可能遇到的,例如数据库是Mysql的Myisam引擎的话,显然是不支持事务的

异常被捕捉了

如果异常被捕捉了,会认为程序不会出错,也就不会发生回滚操作

自身调用问题

这种情况也是十分常见的,也就是说a方法中调用了b方法,a方法调用b方法是通过this对象来调用的,这是原始对象而不是代理对象,b方法之所以能具有事务的能力是spring的aop生成了代理对象,通过代理对象调用方法,而通过原始对象调用会导致事务失效。

异常类型配置有问题

大家都知道@Transactional可以配置rollbackFor,如果抛出的是不是rollbackFor指定的异常信息,同样也会导致失效。

对于spring事务失效的几种情况我简单罗列了一下:bean对象没有被spring管理,定义的方法不是public修饰符,数据源没有配置事务管理器,数据库本身不支持事务,异常被捕捉了,自身调用问题,异常类型配置有问题等等,注意好这些事项,事务就不会失效啦

  • 收藏
  • 评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK