在一个 Spring 应用中,`ServiceA` 的方法 `methodA` 调用了同一个类中的 `methodB`。`methodA` 没有事务注解,而 `methodB` 使用了 `@Transactional(propagation = Propagation.REQUIRED)` 注解。当外部代码调用 `ServiceA.methodA()` 时,关于 `methodB` 的事务行为,以下哪个说法是正确的?
`methodB` 会正常启动一个新的事务,因为它被 `@Transactional` 注解。
`methodB` 的 `@Transactional` 注解将不会生效,该方法不会运行在事务上下文中。
Spring 容器会抛出 `IllegalStateException`,因为非事务方法不能调用事务方法。
行为取决于使用的是 JDK 动态代理还是 CGLIB。只有 CGLIB 代理可以处理此种内部调用。