У меня есть вопрос о том, как провести аудит производительности по методу с использованием аннотаций, аспектов и пружин.
в основном у меня есть:
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