Spring中事务生效问题

结论

  1. 前提:A方法调用B方法时,B方法有多个修改SQL。
  2. 结论同一类里事务不传递。原因如下:
    • spring会扫描 @Transactional的类和方法,并通过动态代理实现启动事务的代理方法。
    • 同一个类里,A方法(没开启注解)调用B方法(开启注解)是直接调用的,它不会调用spring生成的开启事务的代理方法。
  3. 细节结论
    (1)A方法没加@Transactional,B方法@Transactional:A和B在同一类中,事务无效;A和B不在同一类中,事务生效。
    (2)A方法加@Transactional,B方法没加@Transactional:A和B在同一类中,事务生效;A和B不在同一类中,事务生效。

参考资料

springboot同一个类里的方法之间调用事务不起作用

你可能感兴趣的:(SSM)