개념
- AOP란 관점 지향 프로그래밍(Aspect Oriented Programming)으로, 객체 지향 프로그래밍에서 공통 관심사를 핵심 비즈니스 로직과 분리하여 코드의 중복을 줄이고 유지보수를 향상시키는 개발 방법론이다.
관심사 분리 개념
✔ 핵심 관심사
- 실제 비즈니스 로직
- 예: 서비스 처리, 데이터 가공
✔ 공통 관심사
- 여러 곳에서 반복되는 기능
- 예: 로그인 검증, 권한 체크, 로그, 트랜잭션
AOP 용어
- JoinPoint : 공통 관심사 호출 시점 / 일반적으로 메서드 실행 시점
- PointCut : JoinPoint에서 같은 것들만 모아 놓은 것
- Advice : 공통 관심사의 실제 실행 코드
- Advisor : PointCut + Adbice(전처리, 후처리가 들어가는 코드)
- Weaving : Advice를 Target에 연결 하는 과정
- Target : 실제 핵심 비즈니스 로직 객체
- Aspect : 전체의 관점

ATM 예제
- 절차 지향