这是我的代码段:
@Around("execution(* de.my.package.path.controller.RecommendationController.recommendItems*(..))")
public Object measureTimeWithOverhead(ProceedingJoinPoint joinPoint) throws Throwable {
long startNanoTime = System.nanoTime();
Object proceed = joinPoint.proceed();
long endNanoTime = System.nanoTime();
long diff = endNanoTime - startNanoTime;
System.out.println("Elapsed time: " + (diff));
return proceed;
}
我想在我的进一步程序中使用“diff”变量的值。我该如何检索此值?这甚至可能吗?
(顺便说一句,我正在研究Spring 4.0.2 MVC应用程序)
答案 0 :(得分:1)
目前,没有。 diff
变量是一个局部变量,因此只有在声明(并初始化)之后才能在方法体内访问。
AOP建议旨在在程序执行的某个点添加其他行为(通过执行代码)。它是一个独立的组件。它可以知道它拦截的代码,但反之亦然。
如果您需要执行此操作,显然有解决方法,但我不建议。您可以在某些课程中使用static
ThreadLocal
并设置其任何diff
都是值。然后,您可以在其他地方访问ThreadLocal
。