** AOP를 실제로 많이 쓰진 않지만 기술 면접에서 AOP 개념에 대해 많이 출제된다고 한다.
관점 지향 프로그래밍(Aspect Oriented Programming)의 약자
애플리케이션의 여러 부분에 걸쳐 있는 기능을 횡단 관심사(Cross-cutting concerns)라고 한다.
AOP는 횡단 관심사를 분리하고 분리한 기능을 어디에 어떻게 적용할지 선언적으로 정의할 수 있다.
AOP의 목적은 횡단 관심사와 이에 영향받는 객체 간 결합도를 낮추는데 있다.
애스펙트(Aspect)는 횡단 관심사를 분리하여 작성한 클래스(어드바이스 + 포인트컷)
어드바이스(Advice)는 애스펙트가 해야 할 작업과 언제 그 작업을 수행해야 하는지 정의하는 것을 말한다.
조인포인트(JoinPoint)는 어드바이스가 적용될 수 있는 모든 곳을 의미한다.
(메소드 호출 지점, 예외 발생 지점, 필드 등)
포인트컷(PointCut)은 여러 조인포인트 중에 실제 어드바이스가 적용될 조인포인트를 정의하는 것을 말한다.
대상 객체(Target Object)는 애스팩트가 적용될 객체를 말한다.