Имам въпрос относно това как да направя одит на ефективността на времето върху метод, използвайки анотации, aspectj и spring
по принцип имам:
public class MyClass{
@TimeAudit
public myMethod(){
//do something
}
}
искам просто да регистрирам (или просто да го отпечатам в конзолата) някъде времето, прекарано за изпълнението на този метод. Моят проблем е как даден аспект ще прихване тази анотация и след това ще преброи времето, изразходвано от този метод.
Как мога да направя това? за да изясня малко въпроса си: имам анотацията:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface TimeAudit {
}
имам моя аспект:
@Aspect
@Component
public class PerformanceTimeExecutionAudit {
@Around("execution(* *(..)) && @annotation(timeAudit)")
public Object doLogTime(final ProceedingJoinPoint pjp, TimeAudit timeAudit) throws Throwable {
System.out.println("Start time..."+System.currentTimeMillis());
Object output = pjp.proceed();
System.out.println("End time..."+System.currentTimeMillis());
return output;
}
}
в друг клас:
@Repository
public class MyClass{
@Override
@TimeAudit
public void myMethod(){
//do something
}
}
но аспектът не се задейства за този метод, когато поставих @TimeAudit. Какво правя грешно?
@Profiled
е в пакетаaop
. Това задействаProfiledTimingAspect
, който също е в същия пакет. Оттук можете да следвате кода за това как се обработва действителното измерване и регистриране. Конфигурацията на AspectJ е на страницата, към която свързах по-горе. - person manish   schedule 10.07.2015