jdk动态代理demo如下所示:(命名随意了,望见谅)

 

Sping AOP切面失效问题

当代理类调用test方法的时候,会进入到InvocationHandler的invoke方法中,执行完增强逻辑后,接着执行

method.invoke(proxyDemo, args),proxyDemo就是我们被代理的类,之后的方法就是在proxyDemo实例中执行,所以test1方法是不会再进入到InvocationHandler的invoke方法中的。

springAOP中的切面失效也是同样的道理。

Sping AOP切面失效问题

进入到invokeJoinpointUsingReflection方法可以看到,是通过反射执行target中的相应方法。

Sping AOP切面失效问题

进入到proceed方法中,我们可以看到,就是递归的执行拦截器链上的方法,执行到最后的时候执行invokeJoinpoint方法。

Sping AOP切面失效问题

invokeJoinpoint方法其实就是通过反射调用target中的相应方法。

Sping AOP切面失效问题

所以根据上述的分析,我们知道,如果一开始调用的方法没有进行切面增强的话,其内部再调用有切面增强的方法,这时切面是不会生效的,因为此时调用有切面增强方法的类不是代理类,而是被代理类本身。

解决方法见https://blog.csdn.net/gongxiao1993/article/details/81208659

 

相关文章:

  • 2022-01-20
  • 2021-06-25
  • 2022-12-23
  • 2022-12-23
  • 2022-01-06
  • 2022-01-21
  • 2022-01-29
  • 2021-12-10
猜你喜欢
  • 2021-11-04
  • 2021-11-20
  • 2021-07-23
  • 2022-01-14
  • 2022-12-23
  • 2021-06-09
  • 2021-12-06
相关资源
相似解决方案