spring注解@EnableAspectJAutoProxy的学习

@EnableAspectJAutoProxy(proxyTargetClass = true, exposeProxy = true)

proxyTargetClass = true : 表示使用CGLIB实现代理类;默认为false:使用JDK实现代理类。

exposeProxy = true : 表示是否对外暴露代理对象,即是否可以获取AopContext。通常用于拦截嵌套调用的方法。如自调用方法的拦截:

分析:AOP拦截的本质是为调用的对象生成了一个代理对象,而自调用使用 this关键字获取到的是原对象而非代理对象也就不会进行拦截了。

解决:将自调用改为 ((TargetObject) AopContext.currentProxy()).function(), 即获取当前代理对象进行函数调用。

因为我喜欢追寻过程中的自己
原文地址:https://www.cnblogs.com/IzuruKamuku/p/14372964.html