AOP(Aspect Oriented Programming)란? Aspect란, 그 자체로 애플리케이션의 핵심기능을 담고 있지는 않지만, 애플리케이션을 구성하는 중요한 한가지 요소이고, 핵심기능에 부가되어 의미를 갖는 특별한 모듈을 가리킨다.(대표적인 예로 로깅이나 트랜잭션과 같은 기능이 있다.) 대게 애플리케이션은 핵심기능과 여러 부가기능들이 함께 어우러져서 동작하게 되어있다. 따라서 런타임시에는 각 부가기능 애스펙트가 자기가 필요한 위치에서 dynamic하게 참여한다. 하지만 설계와 개발은 서로 다른 특성을 띈 애스펙트들을 독립적인 관점으로 작성할 수 있다. 그리고 이렇게 애플리케이션의 핵심적인 기능에서 부가적인 기능을 분리해서 애스펙트라는 독특한 모듈로 만들어서 설계하고 개발하는 방법을 관점지향프로그..