33 lines
1.0 KiB
Java
33 lines
1.0 KiB
Java
package com.baeldung.aop;
|
|
|
|
import org.aspectj.lang.ProceedingJoinPoint;
|
|
import org.aspectj.lang.annotation.Around;
|
|
import org.aspectj.lang.annotation.Aspect;
|
|
import org.aspectj.lang.annotation.Pointcut;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.logging.Logger;
|
|
|
|
@Aspect
|
|
@Component
|
|
public class PerformanceAspect {
|
|
|
|
private static Logger logger = Logger.getLogger(PerformanceAspect.class.getName());
|
|
|
|
@Pointcut("within(@org.springframework.stereotype.Repository *)")
|
|
public void repositoryClassMethods() {
|
|
}
|
|
|
|
@Around("repositoryClassMethods()")
|
|
public Object measureMethodExecutionTime(ProceedingJoinPoint pjp) throws Throwable {
|
|
long start = System.nanoTime();
|
|
Object retval = pjp.proceed();
|
|
long end = System.nanoTime();
|
|
String methodName = pjp.getSignature().getName();
|
|
logger.info("Execution of " + methodName + " took " + TimeUnit.NANOSECONDS.toMillis(end - start) + " ms");
|
|
return retval;
|
|
}
|
|
|
|
}
|