环绕通知中需要一个 ProceedingJoinPoint 类作为参数,调用此类中的 proceed() 方法才能对原始方法进行调用,否则将不执行原始方法
当原始方法有返回值时,通常将环绕通知的方法返回类型设置为 Object,调用 proceed() 获得原始返回值,再将其返回
当原始方法无返回值时,也可以将环绕通知的返回类型设置为 Object
环绕通知中可以循环调用多次 proceed() 方法,而只需要返回一次
由于无法预知原始方法是否会抛出异常,因此环绕通知方法必须抛出 Throwable 对象
// 示例:将原始方法循环调用 10000 次计算耗时
@Around("pt()")
public Object aroundMethod(ProceedingJoinPoint pjp) throws Throwable {
long start = System.currentTimeMillis();
Object res = null;
for (int i = 0; i < 10000; i ++)
res = pjp.proceed();
long end = System.currentTimeMillis();
System.out.println("耗时:" + (end - start) + " ms");
return res;
}