Example 1. PerformanceAdvice
@Aspect
public class PerformanceAdvice {
@Pointcut("execution(public * org.springbyexample.aspectjLoadTimeWeaving..*.*(..))")
public void aspectjLoadTimeWeavingExamples() {
}
@Around("aspectjLoadTimeWeavingExamples()")
public Object profile(ProceedingJoinPoint pjp) throws Throwable {
final Logger logger = LoggerFactory.getLogger(pjp.getSignature().getDeclaringType());
StopWatch sw = new StopWatch(getClass().getSimpleName());
try {
sw.start(pjp.getSignature().getName());
return pjp.proceed();
} finally {
sw.stop();
logger.debug(sw.prettyPrint());
}
}
}