관점 지향 프로그래밍 (AOP, Aspect-Oriented Programming)

KangHo Lee's avatar
Nov 21, 2024
관점 지향 프로그래밍 (AOP, Aspect-Oriented Programming)
💡
프로그램의 여러 부분에 공통적으로 적용되는 관심사를 모듈화하여 코드의 재사용성을 높이고 유지 보수성을 향상시키기 위한 프로그래밍 패러다임입니다.

주요 개념

  1. Aspect (관점):
      • 횡단 관심사(Cross-Cutting Concern)를 모듈화한 단위입니다.
      • 예를 들어, 로깅, 보안, 트랜잭션 관리 등이 Aspect로 구현될 수 있습니다.
  1. Join Point (조인 포인트):
      • 프로그램 실행 중 특정 지점을 나타냅니다.
      • 메서드 호출, 예외 발생, 필드 접근 등이 조인 포인트에 해당합니다.
  1. Advice (어드바이스):
      • 특정 조인 포인트에서 실행되는 코드입니다.
      • 실행 시점에 따라 Before, After, Around 등으로 구분됩니다.
  1. Pointcut (포인트컷):
      • 어드바이스가 적용될 조인 포인트를 지정하는 표현식입니다.
      • 특정 메서드나 클래스에 어드바이스를 적용할 지점을 지정합니다.
  1. Weaving (위빙):
      • Aspect와 애플리케이션 코드가 결합되는 과정입니다.
      • 컴파일 타임, 로드 타임, 런타임에 이루어질 수 있습니다.
💡
AOP의 어려운 점 → 관점에 따라 공통적으로 적용되는 관심사를 실행하는 코드가 조금씩 달라야 합니다. (완전히 같은 코드라면 인터셉터, 필터가 더 좋습니다.)
 
Share article

devleekangho