事务失效的原因总结

Posted 冲冲冲冲冲冲!!!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事务失效的原因总结相关的知识,希望对你有一定的参考价值。

1、mysql使用的引擎是MyISAM,MyISAM不支持事务!

2、@Transactional 注解开启配置,必须放到listener里加载!

3、在类A里面有方法a 和方法b, 然后方法b上面用 @Transactional加了方法级别的事务,在方法a里面 调用了方法b, 方法b里面的事务不会生效。原因是在同一个类之中,方法互相调用,切面无效 ,而不仅仅是事务。这里事务之所以无效,是因为spring的事务是通过aop实现的。

4、Spring团队建议在具体的类(或类的方法)上使用 @Transactional 注解,而不要使用在类所要实现的任何接口上。在接口上使用 @Transactional 注解,只能当你设置了基于接口的代理时它才生效。因为注解是不能继承 的,这就意味着如果正在使用基于类的代理时,那么事务的设置将不能被基于类的代理所识别,而且对象也将不会被事务代理所包装。

5、在业务代码中如果抛出RuntimeException异常,事务回滚;但是抛出Exception,事务不回滚。

以上是关于事务失效的原因总结的主要内容,如果未能解决你的问题,请参考以下文章

Spring事务失效的原因

mysql事务处理失效原因

@Transactional注解失效的解决方案

SpringBoot+Shiro引起事务失效错误原因解决方法

spring 的相关的事务失效的问题总结

索引失效原因总结