注解aop-常见问题-如何解决方法内部调用切面不生效问题

时间:2024-04-13 20:43:26

-----------------------问题原因-------------------

为什么能够切入目标对象,原理就是创建了代理类,在代理类中调用目标方法前后进行切入;假如代理对象是$proxy0,对于B方法$proxy0.B(),执行流程就是先记录日志再调用目标对象s的B方法,所以可以切入;但是A方法$proxy0.A(),只能对A方法增强,A里面调B的时候使用的是s目标对象s.B(),而不是$proxy0.B(),所以对B的切入无效,因为压根就没用代理对象去调用;

-----------------------解决-------------------

解决内部调用没有生效的几种方法:
2.1)bean自引用调用;
注解aop-常见问题-如何解决方法内部调用切面不生效问题
2.2)获取当前代理对象;

注解aop-常见问题-如何解决方法内部调用切面不生效问题
2.3)拆成独立的实现类,再来调用;