Этот вопрос проверяет умение использовать аспекты или Spring-инструменты для измерения производительности методов.
Для логирования времени выполнения методов можно использовать Spring AOP (аннотации @Aspect, @Around) или сторонние инструменты, такие как Spring Boot Actuator и Micrometer. Это позволяет обернуть нужные методы и логировать время работы централизованно.
Подключить зависимость spring-boot-starter-aop.
Создать аспект с аннотацией @Aspect.
@Aspect
@Component
public class PerformanceLogger {
@Around("@annotation(LogExecutionTime)")
public Object logTime(ProceedingJoinPoint joinPoint) throws Throwable {
long start = System.currentTimeMillis();
Object result = joinPoint.proceed();
long elapsed = System.currentTimeMillis() - start;
System.out.println("Execution of " + joinPoint.getSignature() + " took " + elapsed + " ms");
return result;
}
}Создать кастомную аннотацию @LogExecutionTime.
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface LogExecutionTime {}Автоматически собирает метрики.
Позволяет интеграцию с Prometheus, Grafana.
AOP — если нужна тонкая настройка и кастомные логи.
Micrometer — если нужна интеграция с системой мониторинга.
Вывод:
Для логирования времени выполнения лучше использовать AOP с кастомной аннотацией, если требуется контроль, или Micrometer для сбора метрик.