分布式事务实战八(Spring事务失效场景)

我们是不是在方法上加了@Transactional注解,事务就一定会生效?这个就不一定了,事务失效的场景有很多,这里主要介绍几种常见的事务失效场景:
事务失效场景一,如下图:
分布式事务实战八(Spring事务失效场景)_第1张图片
如果我们像上图一样,将FlowRechargeCenterServiceImpl类中的@Service注解给注释掉的话,那么这个FlowRechargeCenterServiceImpl就不会交给Spring管理,那么此时就会导致事务失效!那么为什么会失效呢?我们知道,@Transactional是基于AOP来实现的,其实就是在从IOC容器获取bean的时候,为目标类创建动态代理,从而支持事务的,对应的源码如下:
分布式事务实战八(Spring事务失效场景)_第2张图片
正是由于@Transactional是需要基于AOP代理来实现事务管理的,如果此时我们把@Service注解注释的话,那么上面的FlowRechargeCenterServiceImpl类,就不会交给Spring来管理,说白了就不会为FlowRechargeCenterServiceImpl创建

你可能感兴趣的:(分布式事务,java)