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