3

我无法使用 spring aop 性能日志记录私有方法。下面是我在下面的配置中使用的配置

<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>

我的课程路径上有cglibjar。

4

1 回答 1

11

您必须使用编译时编织而不是 Spring AOP 的代理使用。

来自Spring AOP - 支持的切入点指示符

由于 Spring 的 AOP 框架基于代理的性质,根据定义,受保护的方法不会被拦截,对于 JDK 代理(不适用)和 CGLIB 代理(这在技术上可行但不推荐用于 AOP 目的)都不会被拦截。因此,任何给定的切入点都只会与公共方法匹配!

如果您的拦截需求包括受保护/私有方法甚至构造函数,请考虑使用 Spring 驱动的本机 AspectJ 编织而不是 Spring 的基于代理的 AOP 框架。这就构成了具有不同特点的不同AOP使用模式,所以在做决定之前一定要先熟悉编织。

于 2016-02-09T20:08:32.223 回答