Day 32 AOP

정채림·2026년 3월 6일

AOP 구성요소

  • Aspect: 공통 관심사를 담는 Module
  • Join Point: Method 실행 지점.
  • Advice: 실행 시점에 따라 동작하는 AOP 로직(Method 전, 후, 전후 등).
  • Pointcut: 어떤 Join Point에 어떤 Advice를 적용할지 지정해주는 것.
  • Weaving

어노테이션

  • @Aspect: 해당 Class가 AOP Class임을 선언해주는 Annotation입니다.
  • @Around: Method 실행 전후에 AOP를 실행시키도록 지정합니다.
  • @Before: Method 실행 전에만 AOP를 실행시키도록 지정합니다.
  • @AfterReturning: 감시하는 Method가 Error 없이 정상적으로 Return 되었을 경우에만 실행됩니다.
  • @AfterThrowing: 감시하는 Method 실행 중 예외(장애)가 발생했을 때만 실행됩니다.
  • @After: 정상 반환 또는 예외 발생 여부와 관계없이 Method가 끝나면 무조건 실행됩니다.

구현 코드

@Aspect
@Component
@Slf4j
public class TimeCheckAop {

    @Around("execution(* org.example.nbcam_addvanced_1.user.service..*(..))")
    public Object executionTime(ProceedingJoinPoint joinPoint) throws Throwable {

        long start = System.currentTimeMillis();

        Object result = joinPoint.proceed(); // 실제 메서드 실행 -> Filter에서 doFilter 와 비슷함.

        long end = System.currentTimeMillis();
        log.info("[AOP] {} 실행됨 in {}ms" , joinPoint.getSignature() , end - start);

        return result;
    }
}

0개의 댓글