Если у нас перегружены методы с вложенными вызовами, как показано ниже
public void sample(int a) {
sample(a, 5);
}
public void sample(int a, int offset) {
System.out.println(a + offset);
}
Существует указатель и совет, как показано ниже
@Pointcut("execution(public * sample*(..))")
public void sampleMethod() {}
@Around("sampleMethod()")
public Object storeMetrics(final ProceedingJoinPoint jp) throws Throwable {
System.out.println("Advice called");
}
Теперь, если вызывается sample (10), яполучить "Advice call" дважды в качестве вывода.Означает ли это, что poincut перехватывает оба перегруженных метода?
Но рассмотрим случай, когда метод не перегружен, как показано ниже.Теперь он выводит «Advice call» только один раз, даже если оба метода соответствуют выражению pointcut
public void sample(int a) {
sampleWithOffset(a, 5);
}
public void sampleWithOffset(int a, int offset) {
System.out.println(a + offset);
}
@Pointcut("execution(public * sample*(..))")
public void sampleMethod() {}
@Around("sampleMethod()")
public Object storeMetrics(final ProceedingJoinPoint jp) throws Throwable {
System.out.println("Advice called");
}