实际测试中 spring的 @Transactional 对Service 中的private方法有效。 但是看网上好多文章说对私有方法不生效, 这种误人子弟的文章太多了。。 如果只加@Transactional ,不指定 rollbackFor的话,默认的回滚的异常是RuntimeException。 但是 SQLException 不继承自RuntimeException 而是Exception。 所以很多人没加个 rollbackFor ,然后sql异常了,以为是私有方法的锅
来源:云原生后端社区
https://www.yuque.com/server_mind/answer
那你应该有开AspectJ吧 ?或则新版本支持? 我这边确实遇到,A类中B和C两个方法,B调用C,且给C新开事务,但是B方法报错,也会影响C的事务,说明这两个事务没隔离,@Transactional没生效。最好加上 rollbackFor=throwable ,SQLexception 能不能回滚需要再测试下。不过看注释貌似不行,因为 SQLException属于 Exception,@Trascational 默认回滚的异常是 RuntimeException
来源:云原生后端社区
https://www.yuque.com/server_mind/answer
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。