Mit AspectJ können Sie verwenden .around() Anmerkung:
@Aspect
public class TimedAnnotation {
@Around("execution(* *(..)) && @annotation(TimedMethod)")
public Object around(ProceedingJoinPoint point) throws Throwable {
long start = System.currentTimeMillis();
try {
Object p = point.proceed();
return p;
}
finally {
System.out.println(System.currentTimeMillis() - start);
}
}
}
Du musst immer noch für jede Methode, um diese Anmerkung setzen:
@TimedMethod
public void doSomething() {
...
}
Und Sie werden AspectJ hinzufügen müssen zu Ihrem pom.xml:
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.7.3</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.9</version>
</dependency>
haben Sie sich AOP angesehen? –
Wenn Sie dies nur einmal, aber nicht für immer benötigen, dann werfen Sie einen Blick auf einen Java Profiler – Ralph
. Lesen Sie diese Tipps zum Profiling Ihrer App: https://www.infoq.com/articles/java-profiling-with-open- source/ –