我是 AOP 的新手,尤其是 Spring AOP。
我想以某种特定的方法记录执行时间。我阅读了 Spring 文档并认为最好的解决方案是使用注释切入点创建方面。
看起来像:
@Around("@annotation(com.x.y.MethodExecutionTime)")
public Object methodExecutionTimeLog(ProceedingJoinPoint joinPoint) throws Throwable
StopWatch stopWatch = new StopWatch();
Object retVal = null;
try {
stopWatch.start();
retVal = joinPoint.proceed();
stopWatch.stop();
logger.info("Execution time: " + stopWatch.getTotalTimeMillis() + " ms");
} catch(Throwable e) {
logger.error("Execution time: " + stopWatch.getTotalTimeMillis() + " ms");
throw e;
}
return retVal;
}
注解用于方法:
@Override
@MethodExecutionTime
public <T> T copy(Class<T> destType) {
T t = ReflectionHelper.newInstance(destType);
copyTo(t);
return t;
}
春天 XML 配置:
<context:spring-configured />
<aop:aspectj-autoproxy proxy-target-class="true" />
但它什么也没记录。
我正在使用 Spring 3.0.5
有任何想法吗?谢谢