spring事务失效的情况

举报
周杰伦本人 发表于 2022/07/27 13:44:15 2022/07/27
【摘要】 spring事务失效的情况 bean对象没有被spring管理 定义的方法不是public修饰符 数据源没有配置事务管理器 数据库本身不支持事务 异常被捕捉了 自身调用问题 异常类型配置有问题 总结 spring事务失效的情况spring事务失效也是一个老生常谈的话题,也是工作中经常会遇到的情况,那么在什么情况下spring的事务会失效呢?在这里我简单罗列一下相关的情景 bean对象没有被...

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修饰符,数据源没有配置事务管理器,数据库本身不支持事务,异常被捕捉了,自身调用问题,异常类型配置有问题等等,注意好这些事项,事务就不会失效啦

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。