You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring同类事务方法调用事务方法是否失效?saveAddress是否回滚?

同一类内事务方法互调的事务问题分析
  • 事务是否失效?
    Spring声明式事务依赖动态代理实现,当同一类中被外部调用的doInsert方法直接调用本类的saveAddress方法时,saveAddress上的@Transactional注解会失效。因为内部调用不会经过代理对象的拦截逻辑,Spring无法为saveAddress单独应用事务配置。

  • saveAddress执行后发生异常会回滚吗?
    这取决于doInsert的事务配置:

    • 如果doInsert带有@Transactional注解,那么整个doInsert方法处于同一个事务中。只要后续的异常未被捕获且符合Spring事务回滚规则(默认是RuntimeException和Error),整个事务会回滚,saveAddress的操作也会被回滚——但这是依托doInsert的事务,而非saveAddress自身的事务生效。
    • 如果doInsert没有事务注解,那么saveAddress的事务也不会生效,此时发生异常时,saveAddress的操作不会自动回滚,因为没有事务管理机制介入。

内容的提问来源于stack exchange,提问作者luochen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 04:32:01