2017-01-04 10 views
0

У меня есть этот АОП, которые работают на всех моих методов применения, но я хочу, чтобы работать только на методы, которые аннотаций с ProfileExecution аннотацию, , как я могу сделать это с помощью этого XMLтолько Spring AOP метод с аннотацией

<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

Используйте следующее выражение pointcut @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> 

Обязательно укажите полное имя аннотаций в выражении иначе она не будет работать.