Spring 프레임워크에서 실행 시간을 측정하는 기능.
어떤 메서드가 얼마나 오래 실행되는지 확인하고, 수정한 코드와 비교하면서 성능을 개선할 수 있습니다.
TimeTraceAspect 클래스는 AOP(Aspect-Oriented Programming) 개념을 활용하여 메서드 실행 전후에 시간을 측정하고 로그로 출력하는 역할을 합니다. @Aspect 어노테이션을 사용하여 Aspect로 등록되며, @Around 어노테이션을 통해 대상 메서드를 감싸 실행 전후에 특정 로직을 수행합니다.
@Aspect
@Component
@Slf4j
public class TimeTraceAspect {
@Around("execution(* com.sns.domain..*(..))")
public Object execute(ProceedingJoinPoint joinPoint) throws Throwable {
long start = System.currentTimeMillis();
try {
return joinPoint.proceed();
} finally {
long finish = System.currentTimeMillis();
long timeMs = finish - start;
log.info("Method: {} Execution Time: {}ms", joinPoint.getSignature().toShortString(), timeMs);
}
}
}
위의 코드에서는 execution(* cohttp://m.sns.domain..*(..)) 표현식을 사용하여 cohttp://m.sns.domain 패키지와 그 하위 패키지에 속한 모든 메서드를 대상으로 실행 시간을 추적합니다. 이 부분은 필요에 따라 수정할 수 있으니 자신의 프로젝트에 맞게 설정합니다.
execute 메서드 내부에서는 joinPoint.proceed()를 호출하여 실제 메서드를 실행합니다. 이때 실행 시작 시간(start)을 기록하고, 메서드 실행이 완료된 후에는 실행 종료 시간(finish)을 기록하여 실행 시간(timeMs)을 계산합니다. 마지막으로 로그를 출력하여 메서드의 실행 시간을 확인할 수 있습니다.
'Spring' 카테고리의 다른 글
| Spring Day 35 : 동시성 제어의 중요성 (0) | 2024.03.22 |
|---|---|
| Spring Day 34 : @Cacheable, @CachePut, @CacheEvict (0) | 2024.03.20 |
| Spring Day 32 : Booleanbuilder, Booleanexpression (0) | 2024.03.12 |
| Spring Day 31 : Soft Delete v2 (2) | 2024.03.11 |
| Spring Day 30 : 통합 테스트, 단위 테스트 차이 (0) | 2024.03.08 |