AOP란, Aspect-Oriented Programming의 약자로 관점 지향 프로그래밍을 의미합니다.
관점 지향 프로그래밍은 횡단 관심사(Cross Cutting Concern)의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임입니다.이를 통해 기능의 코드 핵심부를 어수선하게 채우지 않고도 비즈니스 로직에 핵심적이지 않은 동작들을 프로그램에 추가할 수 있도록 합니다.
횡단 관심사(또는 흩어진 관심사)를 Aspect로 모듈화하고 핵심적인 비즈니스 로직에서 분리하여 재사용하겠다는 것이 AOP의 취지라고 할 수 있습니다.
횡단 관심사의 전형적인 예로 로깅을 들 수 있습니다. 로깅 전략이 필연적으로 시스템 상에서 로그되는 모든 부분에 영향을 미치기 때문에, 로깅은 로그가 되는 모든 클래스들과 메서드들을 횡단하게 됩니다.
관점 지향 프로그래밍
[Spring] 스프링 AOP (Spring AOP) 총정리 : 개념, 프록시 기반 AOP, @AOP
[Spring] AOP란? 용어 정리, 사용 방법