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

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

阅读 2.5k
2 个回答

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

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

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

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

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


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


本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题