Я пытаюсь перехватить все методы из классов, которые расширяют определенный класс. Я определил свой аспект следующим образом:
@Aspect
public class LogMethodAspect implements Serializable {
@Around("execution(* org.custom.es.GenericComponent+.*(..))") {
public Object measureExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable {
long startTime = System.currentTimeMillis();
Object result = joinPoint.proceed();
System.out.println(joinPoint+ " -> " + (System.currentTimeMillis() - startTime) + " ms");
return result;
}
}
Объявление аспекта в Spring:
<bean id="logMethodAspect" class="org.custom.es.LogMethodAspect" />
Суперкласс
package org.custom.es;
public abstract class GenericComponent {
//some code
}
Экзамен подкласса
package org.implementation.es;
public class InformationComponent extends GenericComponent {
//some code
}
Однако он никогда не перехватывает его. То, что я понял:
- Боб создается.
- Если я изменю значение аннотации @Around на объявление на основе аннотации (например, @annotation (myanotation), и использовать эту аннотацию на подклассе, она работает правильно, но я не могу go аннотировать каждый подкласс (в будущем можно будет создать больше).
Я пытался использовать опцию, приведенную в этот вопрос Как указать единый pointcut для всех классов, которые расширяют указанный c class , но он также не работает.
Спасибо за любую помощь