728x90
AOP는
공통관심사항과 핵심관심사항을 분리시켜논다.
모든회원의 로그인하는 시간 또는 내가 실행하는 모든 패키지에 대해 시간을 측정해줄수있다.
다음소스는 Mapper,Service,Controller에서 실행되는 메서드들의 실행시간을 측정하는 소스이다.
package com.example._0816test2.AOP;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class TimeTraceAop {
@Around("execution(* com.example._0816test2..*(..))")
public Object execute(ProceedingJoinPoint joinPoint) throws Throwable{
long start =System.currentTimeMillis();
System.out.println("Start:"+joinPoint.toString());
try{
return joinPoint.proceed();
}
finally {
long finish =System.currentTimeMillis();
long timeMs =finish-start;
System.out.println("End:"+joinPoint.toString()+""+timeMs+"ms");
}
}
}
결과값:
728x90
'aop' 카테고리의 다른 글
Sentry.io를 이용하여 Log를 한눈에 보기 (0) | 2023.02.20 |
---|---|
Spring Filter,Interceptor,AOP 차이 (0) | 2023.02.19 |
AOP 전처리와 후처리 공통로직,핵심로직을 분리. (0) | 2023.02.13 |