Spring声明式事务失效原因总结

本文介绍了在使用Spring进行事务管理时遇到的常见问题,如非支持事务的数据库引擎、未被Spring管理的Bean、自身方法调用、方法访问权限、事务回滚条件和异常处理不当等,并提供了相应的解决策略。
摘要由CSDN通过智能技术生成

1、数据库不支持事务

例如:MySQL中 ,MyISAM 引擎是不支持事务,要支持事务都会使用 InnoDB引擎。

解决方法:使用支持事务的数据库引擎。

2、事务所在的Bean没有被Spring管理

例如:service层的类上面没有加@Service注解,导致这个Bean没有被Spring管理,那么注解也是会失效的。

3、同一类中的自身方法调用

例如:类中有方法A(),方法B(),A调用了B,B方法上使用了事务注解,此时事务会失效。

解决办法:将B()方法写到一个新的类里面,交给Spring管理,然后A方法使用外部调用的方式调用B方法。

4、方法不是Public

事务注解修饰的方法不是公共的,事务也会失效。

5、rollbackFor异常指定错误

rollbackFor中指定的异常和你代码抛出的异常不一致。

6、异常被捕获

如果业务代码里面的异常被捕获,事务也会失效。

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何怀逸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值