在同一个类中一个普通方法调用另一个有@Transcational注解的方法时,Spring事务管理还启作用吗?

问题如图所示:

Spring - 在同一个类中一个普通方法调用另一个有@Transcational注解的方法时,Spring事务管理还启作用吗?

即a是加了事务管理注解的,而b没有,这种情况下调用b,spring事务管理还会起作用吗??

答案是不会起作用的。


这是因为:Spring的事务管理是通过AOP实现的,其AOP的实现对于非final类是通过cglib这种方式,即生成当前类的一个子类作为代理类,然后在调用其下的方法时,会判断这个方法有没有@Transactional注解,如果有的话,则通过动态代理实现事务管理(拦截方法调用,执行事务等切面)。当b()中调用a()时,发现b()上并没有@Transactional注解,所以整个AOP代理过程(事务管理)不会发生。

附 使用AOP 代理后的方法调用执行流程

Spring - 在同一个类中一个普通方法调用另一个有@Transcational注解的方法时,Spring事务管理还启作用吗?


相关文章:

  • 2021-09-15
  • 2021-08-27
  • 2021-04-16
  • 2022-12-23
  • 2021-09-28
  • 2022-12-23
  • 2021-11-22
猜你喜欢
  • 2021-08-14
  • 2021-07-30
  • 2022-02-01
  • 2022-12-23
  • 2022-12-23
  • 2021-07-20
  • 2022-12-23
相关资源
相似解决方案