java / intermediate
Snippet
Aspektorientierte Programmierung (AOP) zur Performance-Überwachung
AOP ermöglicht die Trennung von übergreifenden Belangen wie Logging oder Zeitmessung von der eigentlichen Geschäftslogik. Mit dem @Around-Advice können Sie Methodenaufrufe abfangen, Logik davor und danach ausführen und sogar den Rückgabewert ändern.
snippet.java
1
2
3
4
5
6
7
8
9
10
11
12
@Aspect@Componentpublic class ExecutionTimeAspect {@Around("@annotation(LogExecutionTime)")public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable {long start = System.currentTimeMillis();Object proceed = joinPoint.proceed();long executionTime = System.currentTimeMillis() - start;System.out.println(joinPoint.getSignature() + " executed in " + executionTime + "ms");return proceed;}}
spring
Erklärung
1
@Around("@annotation(LogExecutionTime)")
Definiert einen Pointcut, der auf jede mit @LogExecutionTime annotierte Methode abzielt.
2
joinPoint.proceed()
Führt die eigentliche Methode aus, die abgefangen wurde.
3
joinPoint.getSignature()
Ruft Informationen über die aufgerufene Methode ab.