Я начинаю работу с AOP в первый раз.
У меня есть первый аспект:
@Aspect
public class SyncLoggingAspect {
private final Logger logger = Logger.getLogger(this.getClass());
@Before("execution(public * *(..))")
public void anyPublic() {
System.out.println("HIT POINTCUT");
}
}
Это успешно продолжается при вызове любого вызова метода, который является общедоступным. Однако, когда я изменяю его на это:
@Before("execution(public * doPoll(..))")
public void anyPublic() {
System.out.println("HIT POINTCUT");
}
Я бы ожидал, что он будет работать над любым общедоступным методом, называемым doPoll, но когда не будет вызван такой метод:
public class GmailContactPoller extends ContactPoller<GoogleUser, ContactPusher<GoogleUser>> {
Logger logger = Logger.getLogger(this.getClass());
@Override
public List<? extends ContactPusher<GoogleUser>> doPoll() throws PollException {
...
}
}
Есть ли что-то, что мне не хватает с синтаксисом EL? Или это как-то связано с иерархией наследования? Суперклассический метод doPoll является абстрактным в абстрактном классе Poller. Не возникает ли проблема с интерфейсом?
Изменить: я только заметил, что моя IDE включает в себя инструмент spring аспект, и теперь у меня есть следующее предупреждение компилятора с помощью метода:
"Описание Тип расположения пути ресурса совет, определенный в datasync.aop.aspects.SyncLoggingAspect не применяется [Xlint: adviceDidNotMatch] SyncLoggingAspect.java/DataSync/src/main/datasync/aop/аспекты "