@AspectJ точечный вырез для методов выполнения пакета

#java #aop #aspectj #spring-aop

#java #aop #aspectj #spring-aop

Вопрос:

Я хочу выполнить метод execute в определенном пакете.

Какой может быть возможный точечный вырез для этого?

Примечание: я использую Spring AOP в стиле @AspectJ.

Комментарии:

1. Пожалуйста, будьте более подробными. ИТАК … у вас есть метод, который вы хотите вызвать, называется execute() , и откуда вы хотите его выполнить?

2. Если я вас правильно понимаю, вам нужно следующее выполнение (* com.company ..*(..)), если мы говорим о точечном вырезании

3. спасибо SirVaulterScoff это можно использовать для всех методов в пакете, но я хочу выполнить конкретный метод с именем abc, тогда где мне нужно было его предоставить?

4. Учитывая spring-aop, у вас должно быть что-то вроде этого: <aop:advisor advice-ref=»myAdvice» точка отсечения=»выполнение (* com.mycompany..*(..))» order=»1″/> Очевидно, у вас должен быть компонент spring с именем myAdvice, который реализует org.aopalliance.intercept. MethodInterceptor

Ответ №1:

Посмотрите здесь http://www.eclipse.org/aspectj/doc/released/adk15notebook/annotations-pointcuts-and-advice.html

@(org.xyz..*) Соответствует любому аннотированному элементу, который имеет либо аннотацию типа, соответствующего шаблону типа (org.xyz..*) . Другими словами, аннотированный элемент с аннотацией, который объявлен в пакете org.xyz или подпакете. (В этом примере скобки обязательны).

Итак, у вас должна быть следующая конфигурация aop:

 <aop:config>
 <aop:advisor advice-ref="myAdvice" pointcut="execution(* com.mycompany..*(..))" order="1"/> 
</aop:config>
  

и соответствующий компонент для этого совета

 <bean id="myadvice" class="com.mycompany.MyIntercetpor"/>
  

Перехватчик должен реализовать org.aopalliance.intercept.MethodInterceptor