AOP(Aspect-Oriented Programming)를 실현하는 기능-개념은 핵심기능과 공통기능을 가진다.
핵심기능은 기능-개념의 본질적 가치를 실행하는 기능이고,
공통기능은 기능-개념의 완성을 위해 부가적으로 사용되고 다른 기능-개념들에게도 공통적으로 사용되는 기능이다.
순차적으로 수행되는 핵심기능과 공통기능들 사이에 필요하다면 Point-cut으로 공통기능을 추가적으로 집어넣거나 핵심기능을 더 추가할 수 있다.
회원가입을 진행하는 기능으로 개념적 예를 들자면, 핵심 기능은 유저정보 DB 추가, 공통기능은 아이디와 비밀번호의 유효성 검사, 로그 출력, 성공 메시지 응답 등이 있다.
순차적으로 진행되는 이 기능들 사이에 우리는 사용자의 아이디를 lower case하는 공통기능을 Point-cut하여 끼워넣을수도 있을것이다.
AOP는 개념 뿐만 아니라 실제로 스프링에서 차용한 논리적 동작법이다.
핵심기능을 임시 proxy(대리인의 뜻)공간이라 불리우는 메모리 공간으로 가져와 공통기능을 Point-cut하여 조립한다. 이 때, proxy공간으로 가져온 핵심기능의 제어권은 대리인이 가지게 된다.
AOP는 관점 지향 프로그래밍으로, 개발자가 구현할 기능의 관점인 핵심기능만 구현하면 대리인이 공통기능을 알아서 추가해준다는 의미를 가지고있다.