
@Component
@Aspect
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");
}
}
}
핵심 관심사항과 공통 관심사항을 분리한다. @Around를 통해 어디 패키지의 어느 부분까지 공통으로 적용할 건지 정할 수 있음. @Aspect를 붙이면 되고, 파일 만들어 @Component로 컨테이너에 등록할 지, 이미 있는 config 클래스에 @Bean으로 등록할지는 취향. 데코레이터 비슷한거인듯.
저걸 하면 저 과정을 거치고 들어감. 프록시로 모방해서 저놈이 실행하는 거다.

'CS > 김영한 스프링 강의' 카테고리의 다른 글
스프링 기본 - 섹션2,3. 스프링 핵심 원리 이해 - 예제 만들기, 객체 지향 원리 적용 (0) | 2023.07.02 |
---|---|
스프링 기본 - 섹션1 객체 지향 설계와 스프링 (0) | 2023.06.30 |
스프링 입문 - 섹션6 스프링 DB 접근 기술 (0) | 2023.06.28 |
스프링 입문 - 섹션4 스프링 빈과 의존관계 (0) | 2023.06.27 |
만든 이유 (0) | 2023.06.25 |