私はAOP、特にSpringAOPの初心者です。
特定の方法で実行時間を記録したい。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;
}
Spring XML構成:
<context:spring-configured />
<aop:aspectj-autoproxy proxy-target-class="true" />
しかし、それは何も記録しません。
Spring3.0.5を使用しています
何か案は?ありがとう