spring注解@EnableAspectJAutoProxy的学习
@EnableAspectJAutoProxy(proxyTargetClass = true, exposeProxy = true)
proxyTargetClass = true : 表示使用CGLIB实现代理类;默认为false:使用JDK实现代理类。
exposeProxy = true : 表示是否对外暴露代理对象,即是否可以获取AopContext。通常用于拦截嵌套调用的方法。如自调用方法的拦截:


分析:AOP拦截的本质是为调用的对象生成了一个代理对象,而自调用使用 this关键字获取到的是原对象而非代理对象也就不会进行拦截了。
解决:将自调用改为 ((TargetObject) AopContext.currentProxy()).function(), 即获取当前代理对象进行函数调用。


因为我喜欢追寻过程中的自己

浙公网安备 33010602011771号