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