방명록
- 시간 측정하는 간단한 aop2022년 12월 22일 12시 01분 26초에 업로드 된 글입니다.작성자: 원2728x90반응형
시스템이 느리거나 각 로직별 시간 측정이 필요한 경우
aop 를 사용하여 측정 가능
노가다 안해도 됌
package com.example.whystd.aop; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; // Aspect 를 적어줘야 aop로 사용가능 // Component 사용하면 Component 스캔되어 빈 등록 @Aspect @Component public class TimeTraceAop { @Around("execution(* com.example.whystd..*(..))") public Object execute(ProceedingJoinPoint joinPoint) throws Throwable { long start = System.currentTimeMillis(); System.out.println("START : " + joinPoint.toString()); try { //joinPoint.proceed() 다음 메소드로 진행 return joinPoint.proceed(); } finally { long finish = System.currentTimeMillis(); long timeMs = finish - start; System.out.println("END : " + joinPoint.toString() + " " + timeMs + "ms"); } } }
around
안에 있는 건 패키지 하위의 모든 것을 말함
예를 들어 현재 상태에서 service 만 체크 하려면
@Around("execution(* com.example.whystd.service.*(..))")
이런식으로 하면 된다,
직접 빈을 등록한다면 아래처럼 하면 끝
/* // aop 직접등록법 @Bean public TimeTraceAop timeTraceAop() { return new TimeTraceAop(); }*/
그 후 어떤 로직을 실행하면 아래처럼 뜬다
시간이 오래걸리는 것을 찾아 병목현상을 해결하자ㅇㅇ
728x90반응형'Spring > Spring boot' 카테고리의 다른 글
JPA 로 데이터 액세스 (0) 2022.08.17 mariadb로 데이터 액세스 (0) 2022.08.16 Restful 웹 서비스 구축 (0) 2022.08.16 스프링부트 개념정리 2 (0) 2022.07.27 스프링부트 개념정리 (0) 2022.07.26 다음글이 없습니다.이전글이 없습니다.댓글