구성 요소: Target, Aspect, Advice, Pointcut, JoinPoint

상위 맥락

01. AOP 기본 개념 < 01. AOP와 빈 관리 원리 < 01. Spring MVC1 기초와 아키텍처 < MVC < Spring < Web

핵심 정리

AOP는 단순히 공통 코드를 따로 빼는 기술이 아니라, 횡단 관심사를 어디에, 언제, 어떻게 적용할지 체계적으로 표현하는 구조를 가집니다. 자료에서 반복해서 등장하는 핵심 구성 요소는 Target, Aspect, Advice, Pointcut, JoinPoint입니다.

주요 구성 요소

  • Target: AOP가 적용될 대상 객체입니다. 보통 핵심 비즈니스 로직을 가진 스프링 빈입니다.
  • Aspect: 모듈화된 횡단 관심사 자체입니다. 로깅, 인증, 캐싱, 트랜잭션 같은 관점을 하나의 단위로 묶은 개념입니다.
  • Advice: Aspect 안에 들어 있는 실제 실행 코드입니다. 메서드 실행 전, 실행 후, 예외 발생 시점 등 특정 시점에 동작합니다.
  • JoinPoint: Advice가 적용될 수 있는 실행 지점입니다.
  • Pointcut: 수많은 JoinPoint 중에서 실제로 Advice를 적용할 지점을 골라내는 조건식입니다.

Spring AOP에서의 제한

일반적인 AOP 이론에서는 필드 접근, 생성자 호출, 메서드 실행 등 다양한 지점이 JoinPoint가 될 수 있습니다. 하지만 Spring AOP는 프록시 기반으로 동작하므로 JoinPoint가 메서드 실행 시점으로 제한됩니다. 즉, 스프링에서 AOP를 이해할 때는 “메서드 호출이 프록시를 통과하는가”가 가장 중요한 기준이 됩니다.

동작 흐름

AOP의 흐름은 다음과 같이 읽으면 됩니다.

  1. Target은 핵심 비즈니스 로직을 가집니다.
  2. Aspect는 Target 주변에서 실행될 공통 기능을 정의합니다.
  3. Pointcut은 어떤 메서드 실행에 적용할지 결정합니다.
  4. Advice는 지정된 시점에 실제 부가 기능을 실행합니다.
  5. 스프링은 프록시를 통해 Target 호출 앞뒤에 Advice를 끼워 넣습니다.

연결되는 개념

이 구성 요소들은 횡단 관심사의 모듈화를 구체화하는 용어이며, 실제 스프링 동작에서는 프록시 메커니즘과 연결됩니다.

한 문장 요약

Target은 핵심 로직, Aspect는 분리된 관점, Advice는 실행 코드, Pointcut은 적용 조건, JoinPoint는 적용 가능한 실행 지점입니다.