AOP 용어와 간단한 예제

비구름·2025년 7월 27일

Spring

목록 보기
9/10

AOP 용어

Target Object

부가 기능을 부여할 대상으로 클래스 위치, 어노테이션 등으로 지정할 수 있습니다.

Aspect

AOP를 구현할 클래스에 지정하는 것입니다. Aspect 내부에 Advice와 Pointcut을 함께 가지고 있습니다.

Advice

Target Object에게 줄 부가기능을 말합니다.

어노테이션

  1. Around
    • 메서드 실행 전, 후(예외 포함)
  2. Before
    • 메서드 실행 전
  3. After
    • 메서드 실행 후(예외 포함)
  4. AfterReturning
    • 메서드 정상 실행 후
  5. AfterThrowing
    • 메서드 예외 발생 후

Join point

프로그램 실행 로직에서 Advice가 적용될 수 있는 위치

Pointcut

Advice에 적용할 JoinPoint를 선별하는 작업과 기능을 정의한 모듈

AOP 실전 예제

요구사항

몇몇 메서드의 실행 시간을 터미널에 로그를 남기는 것입니다.

로깅이라는 횡단 관심사를 처리해야하므로 어노테이션을 통한 AOP를 사용하여 처리할 계획입니다.

어노테이션

public @interface LogExecutionTime {
}

Aspect 컴포넌트

@Component
@Aspect
public class ExecutionTimeLogger {
    @Pointcut("@annotation(LogExecutionTime)")
    public void logExecutionTimePointcut() {}

    @Around("logExecutionTimePointcut()")
    public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable {
        long start = System.currentTimeMillis();

        Object result = joinPoint.proceed();

        long excutionTime = System.currentTimeMillis() - start;

        System.out.printf("[%s] : %d", joinPoint.getSignature(), excutionTime);

        return result;
    }
}

적용

기존 메서드에 LogExecutionTime이라는 어노테이션을 추가해주었습니다.

결과

https://github.com/yuntasha/todo-list/blob/develop/src/main/java/practice/project/todo_list/global/log/ExecutionTimeLogger.java

profile
기본부터 정리해나가는 기록용 블로그

0개의 댓글