Я впервые начинаю с АОП.
У меня есть первый аспект:
@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 позволяет использовать инструменты с пружинным аспектом, и теперь у меня появляется следующее предупреждение компилятора по методу:
"Описание Тип пути к ресурсу
Совет, определенный в datasync.aop.aspects.SyncLoggingAspect, не был применен