我有这个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>
由于
答案 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>
确保在表达式中包含注释的完全限定名称,否则它将不起作用。