..

AOP: 관점 지향 프로그래밍과 로깅 실습

1. AOP (Aspect-Oriented Programming)란?

AOP는 애플리케이션의 핵심 비즈니스 로직과는 별개로 공통적으로 발생하는 관심사(Cross-cutting Concerns)를 분리하여 모듈화하는 프로그래밍 패러다임입니다.

  • 주요 대상: 로깅, 트랜잭션 관리, 보안, 에러 핸들링 등.

2. 핵심 용어 정리

  • Aspect: 분리된 공통 기능 그 자체 (관점).
  • Join Point: 어드바이스가 적용될 수 있는 지점 (메소드 실행 시점 등).
  • Advice: 특정 시점에 실제로 수행되는 작업 내용.
  • Pointcut: 어드바이스를 반영할 구체적인 대상(메소드 패턴 등)을 선별하는 규칙.

3. 실무 예제: @Around 기반 로깅

@Aspect
@Component
public class LoggingAspect {

    @Around("execution(* com.example.service..*.*(..))")
    public Object logTrace(ProceedingJoinPoint joinPoint) throws Throwable {
        long start = System.currentTimeMillis();
        try {
            // 실제 타겟 메소드 실행
            return joinPoint.proceed();
        } finally {
            long end = System.currentTimeMillis();
            System.out.println("Execution Time: " + (end - start) + "ms");
        }
    }
}

AOP를 활용하면 비즈니스 로직에 지저분한 로깅이나 보안 코드를 섞지 않고도 깨끗하고 모듈화된 아키텍처를 유지할 수 있습니다.