如果我们使用嵌套调用重载方法,如下所示
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),我得到的“建议调用”是输出的两倍。这是否意味着切入点截获了两个重载的方法?
但是考虑一下方法没有重载的情况,如下所示。现在,即使两个方法都与切入点表达式匹配,它也只输出一次“通知调用”
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");
}
https://stackoverflow.com/questions/50590884
复制相似问题