- Aspect Oriented Programming, 관점 지향 프로그래밍
- 저렇게 이해하는 것 보단.. 프로그램 전체 로직을 비즈니스와 공통으로 쉽게 분리해주는 기법

- 공통로직을 비즈니스 로직안에서 호출하는 것이 아니라
- AOP가 공통로직을 대신해서 호출해주는 구조, 여기서 프록시 패턴이 사용된다
- 보통 예제로는 프로젝트의 모든 Service 클래스에 로깅, 트랜잭션 등의 공통 기능을 추가하여 사용하는 방식으로 설명해주고 있다
관련 용어
- Aspect : 공통 관심, 기능을 일컫는 추상적인 명칭, 로깅, 트랜잭션 등을 생각하면 된다
- Advice : 기능이 구현된 객체, 공통 로직을 담고 있다
- Join Points : 공통 기능을 적용할 수 있는 대상, 각 객체의 메소드가 해당됨
- Pointcuts : 여러 메소드 중 실제 Advice가 적용될 대상 메소드