带有注释的Spring AOP only方法

时间:2017-01-04 20:56:48

标签: spring-aop spring-annotations

我有这个AOP可以在我的所有应用程序方法上运行,但我希望它只在带有ProfileExecution注释的注释方法上运行, 我该怎么做才能使用这个xml

<bean id="profiler" class="com.mytest.ProfilerExecution" />


<aop:config>
    <aop:aspect ref="profiler">

        <aop:pointcut id="serviceMethod" 
            expression="execution(public * *(..))" />
            <aop:around pointcut-ref="serviceMethod" method="profile"/>
    </aop:aspect>
</aop:config>

由于

1 个答案:

答案 0 :(得分:2)

使用以下切入点表达式@annotation(com.abc.xyz.ProfileExecution)AND操作来过滤方法。

所以最终的xml应该如下所示

<aop:config>
    <aop:aspect ref="profiler">
        <aop:pointcut id="serviceMethod" 
            expression="execution(public * *(..)) and @annotation(com.abc.xyz.ProfileExecution)" />
        <aop:around pointcut-ref="serviceMethod" method="profile"/>
    </aop:aspect>
</aop:config>

确保在表达式中包含注释的完全限定名称,否则它将不起作用。