开发者社区> 问答> 正文

@Transactional 对Service 中的private方法思考

实际测试中 spring的 @Transactional 对Service 中的private方法有效。 但是看网上好多文章说对私有方法不生效, 这种误人子弟的文章太多了。。 如果只加@Transactional ,不指定 rollbackFor的话,默认的回滚的异常是RuntimeException。 但是 SQLException 不继承自RuntimeException 而是Exception。 所以很多人没加个 rollbackFor ,然后sql异常了,以为是私有方法的锅 1.png 2.png


来源:云原生后端社区
https://www.yuque.com/server_mind/answer

展开
收起
Atom 2020-04-25 16:03:11 2076 0
1 条回答
写回答
取消 提交回答
  • 那你应该有开AspectJ吧 ?或则新版本支持? 我这边确实遇到,A类中B和C两个方法,B调用C,且给C新开事务,但是B方法报错,也会影响C的事务,说明这两个事务没隔离,@Transactional没生效。最好加上 rollbackFor=throwable ,SQLexception 能不能回滚需要再测试下。不过看注释貌似不行,因为 SQLException属于 Exception,@Trascational 默认回滚的异常是 RuntimeException
    来源:云原生后端社区
    https://www.yuque.com/server_mind/answer

    2020-04-25 16:04:41
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Data as a Service - 数据即服务 立即下载
In-Flux Limiting for a Multi-Tenant Logging Service 立即下载
低代码开发师(初级)实战教程 立即下载