java / expert
Snippet
Aspektorientierte Programmierung für Performance-Monitoring
AOP ermöglicht die Trennung von querschnittlichen Belangen wie Logging oder Performance-Monitoring von der Geschäftslogik. Mit @Around-Advice können Sie Methodenaufrufe abfangen und mit benutzerdefiniertem Verhalten umschließen.
snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
@Aspect@Componentpublic class ExecutionTimeAspect {@Around("execution(* com.app.service.*.*(..))")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("execution(* com.app.service.*.*(..))")
Pointcut-Ausdruck, der auf alle Methoden im Service-Package abzielt.
2
Object proceed = joinPoint.proceed();
Löst die Ausführung der eigentlich abgefangenen Methode aus.
3
joinPoint.getSignature()
Ruft die Methodensignatur der aktuell ausgeführten Methode zu Logging-Zwecken ab.