我无法使用spring aop performance logging记录私有方法。 以下是我在配置下使用的配置
<aop:config proxy-target-class="true">
<aop:pointcut id="allServiceMethods" expression="execution(* com.mycom.app.abc..*.*(..))"/>
<aop:advisor pointcut-ref="allServiceMethods" advice-ref="performanceMonitor" order="2"/>
</aop:config>
我的课程路径上有cglib
jar。
答案 0 :(得分:5)
您必须使用编译时编织而不是Spring AOP的代理使用。
来自Spring AOP - Supported Pointcut Designators
由于Spring的AOP框架基于代理的特性,根据定义,受保护的方法既不是针对JDK代理(这不适用),也不针对CGLIB代理(这在技术上可行,但不建议用于AOP)目的)。因此,任何给定的切入点都只能与公共方法匹配!
如果您的拦截需要包括受保护/私有方法甚至构造函数,请考虑使用Spring驱动的本机AspectJ编织而不是Spring的基于代理的AOP框架。这构成了具有不同特征的不同AOP使用模式,因此在做出决定之前一定要先熟悉编织。