java / intermediate
Snippet
Kapselung von querschnittlichen Ausführungs-Timern mit benutzerdefinierten AOP-Aspekten
Aspektorientierte Programmierung (AOP) kapselt querschnittliche Belange wie Logging, Metriken oder Auditing außerhalb der Kern-Geschäftslogik. Ein `@Around`-Advice fängt Methodenaufrufe ab, die dem Pointcut entsprechen, steuert die Ausführung über `joinPoint.proceed()` und misst die Ausführungszeit, ohne den Code des ursprünglichen Controllers oder Services zu verändern.
snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
13
@Aspect@Componentpublic class PerformanceAspect {@Around("@annotation(org.springframework.web.bind.annotation.GetMapping)")public Object measureExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable {long start = System.nanoTime();Object result = joinPoint.proceed();long durationMs = (System.nanoTime() - start) / 1_000_000;System.out.printf("%s executed in %d ms%n", joinPoint.getSignature().getName(), durationMs);return result;}}
spring
Erklärung
1
@Around("@annotation(org.springframework.web.bind.annotation.GetMapping)")
Definiert einen Pointcut für jede mit `@GetMapping` annotierte Methode und umhüllt deren Ausführung.
2
Object result = joinPoint.proceed();
Führt die eigentliche Zielmethode explizit aus und fängt deren Rückgabewert ab.