Spring事务失效的原因

1.如使用mysql且引擎是MyISAM,则事务会不起作用,原因是MyISAM不支持事务,可以改成InnoDB

2. 如果使用了spring+mvc,则context:component-scan重复扫描问题可能会引起事务失败。
3. @Transactional 注解开启配置,必须放到listener里加载,如果放到DispatcherServlet的配置里,事务也是不起作用的。
4. @Transactional 注解只能应用到 public 可见度的方法上。 如果你在 protected、private 或者 package-visible 的方法上使用 @Transactional 注解,它也不会报错,事务也会失效。
5. Spring团队建议在具体的类(或类的方法)上使用 @Transactional 注解,而不要使用在类所要实现的任何接口上。在接口上使用 @Transactional 注解,只能当你设置了基于接口的代理时它才生效。因为注解是 不能继承 的,这就意味着如果正在使用基于类的代理时,那么事务的设置将不能被基于类的代理所识别,而且对象也将不会被事务代理所包装。
————————————————
原文链接:https://blog.csdn.net/paincupid/article/details/51822599

发布了58 篇原创文章 · 获赞 1 · 访问量 2183

猜你喜欢

转载自blog.csdn.net/qq_37769323/article/details/104040536