AOP Aspect Oriented Programming (측면/양상 지향적 프로그래밍) " 공통의 관심사항을 적용해서 발생하는 의존 관계의 복잡성과 코드 중복을 해소 " 즉, 여러군데서 사용되는 중복되는 코드를 떼어내서 분리하고 각 메소드는 자신이 해야할 작업만 갖고 있자는 개념이다. 여기서 여러군데서 사용되는 중복되는 코드(부가 기능)가 AOP에서 말하는 Aspect이다. 각 클래스에서 공통 관심 사항을 구현한 모듈에 대한 의존관계를 갖기 보단, Aspect를 이용해 핵심 로직을 구현한 각 클래스에 공통 기능을 적용한다. 간단한 설정만으로도 공통 기능을 여러 클래스에 적용할 수 있는 장점이 있으며 핵심 로직 코드를 수정하지 않고도 웹 애플리케이션의 보안, 로깅, 트랜잭션과 같은 공통 관심사항을 AOP..