- 문제를 바라보는 관점을 기준으로 프로그래밍 하는 기법
- 시스템을 핵심 관심사( Core Concern )와 횡단관심사 or 공통관심사 ( Cross-Cutting Concern )로 구분해 설계 구현 테스트 운영하는 것을 말한다
- 핵심관심사 ( Core Concern ) : 시스템의 업무 목적에 해당하는 주요 로직 ( ex - 결제 등록 게시 )
- 횡단관심사 ( Cross Cutting Concern ) : 시스템의 여러 부분에 걸쳐 적용되는 공통적인 로직 ( ex - 트랜잭션, 로깅, 보안 )
- Joinpoint : Advice를 적용 가능한 지점을 의미한다. 메서드 호출, 필드 값 변경 등이 Joinpoint에 해당한다.
- Pointcut : Joinpoint의 부분 집합으로서 실제로 Advice가 적용되는 Joinpoint를 나타낸다.
- Advice : 언제 공통 기능을 적용할 지를 정의한다.
- Weaving : Advice를 핵심 로직 코드에 적용하는 것을 weaving이라고 한다.
- Aspect : 여러 객체에 공통으로 적용하는 기능을 Aspect라고 한다.
- AOP는 시스템의 여러 영역에 걸쳐 공통적이고 반복적으로 적용된 횡단 관심사 로직을 분리하여 별도의 모듈에서 설계 구현 운영하는 프로그래밍기법이다.
- 반복적인 작업을 피할 수 있어서 효율적인 개발이 가능하고
이후 유지보수시 AOP 부분만 변경하면 되므로 유지보수성이 향상된다.