김영한님의 스프링 강의를 보고 작성한 내용입니다.
AOP는 메서드 안의 핵심 기능과 부가 기능을 분리한 후 선택적으로 메서드에 적용해 사용한다는 개념임
🌼 메소드마다 시간 측정 기능을 만들어 놓을 경우
@Aspect // aop
@Component
public class TimeTraceAop {
@Around("execution(* hello.hellospring..*(..))")
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");
}
}
}
TimeTraceAop를 작성하고 @Component 애노테이션을 사용하거나 Config 파일에 @Bean으로 직접 등록해주면 된다.