@Aspect : AOP로 사용 가능하게 해줌
Bean에 등록
컴포넌트 스캔
@Bean
@Bean
public TimeTraceAop timeTraceAop() {
return new TimeTraceAop();
}
@Around
@Around("execution(*hello.hellospring...*(..) ) ")
// 전체 적용의 예시
예시 전체적 코드
ikmo908io900c90-ccgvbhyiju890u7ij89npackage com.GApple.Hello.aop;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class TimeTraceAop {
@Around("execution(* com.GApple.Hello..*(..))")
public Object execute(ProceedingJoinPoint joinPoint) throws Throwable {
long start = jSystem.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");
}
}
}