类 OrderService 中方法 a() 内部直接调用本类的 b(),b() 标注了 @Transactional 而 a() 没有。外部调用 a() 时 b() 的事务会生效吗?

Spring / Java Web

  1. A.会,切面按方法上的注解匹配,与调用路径无关
  2. B.会,但仅在 CGLIB 代理下生效,JDK 动态代理下不生效
  3. C.不会,因为 @Transactional 必须标注在接口方法上才可用
  4. D.不会,内部调用走的是 this 而非代理对象,切面没有介入