A方法上有@Transactional注解,A调B方法 B方法没有事务注解 B里的代码会不会生效事务?

如题,A方法上有@Transactional注解,A调B方法 B方法没有事务注解 B里的代码会不会生效事务??


回答:

如果A方法有@Transactional注解,则A方法和B方法都会在同一个事务中执行,但是如果B方法抛出异常,则整个事务会被回滚。

本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。


回答:

声明式事务,内部通过动态代理(即AOP的方式)方式实现。

开启事务 --> (执行A方法) --> 关闭事务

如果A的事务生效的前提下,B的代码是归属于A的(在这次调用过程中),影响事务的执行只有抛出异常。也就是B中抛出异常(需看@Transactional的rollBackFor配置)时,会导致A事务回滚。


不过有些场景,可能会导致在调用A方法时,事务无效。比如类内部方法调用


本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。

以上是 A方法上有@Transactional注解,A调B方法 B方法没有事务注解 B里的代码会不会生效事务? 的全部内容, 来源链接: utcz.com/p/945042.html

回到顶部