#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