에스펙트(aspect)
구현하고자 하는 횡단 관심사의 기능을 말한다. 즉, 애플리케이션의 모듈화하고자 하는 부분을 에스펙트 또는 영역(area)이라고 한다.
AOP를 이용하면 로깅 애스펙트를 만들어 애플리케이션 전체에 적용하는 것이 가능하다.

결합점(justpoint)
애스펙트를 플러그인할 수 있는 애플리케이션의 실행 지점을 말한다. 결합점은 메소드, 예외, 심지어는 변경 가능한 필드가 될 수도 있다. 정상적인 흐름에 에스펙트의 코드가 삽입되는 위치이다.

충고(advice)
에스펙트의 실제 구현체이며, 애플(이하 애플리케이션)에게 새로운 행위를 충고한다.
로깅예제에서 보면, 로깅 충고는 로그 파일을 기록하는 등의 실제 로깅을 구현한 코드를 포함한다. 결합점에 삽입된다.

교차점(pointcut)
충고가 어떤 결합점에 적용되야 하는지를 정의한다. 교차점은 충고를 적용하고자 하는 결합점을 지정할 수 있도록 해준다. 명시적인 클래스와 메소드 이름을 사용하거나, 클래스와 메소드 이름의 패턴과 일치하는 정규식을 통해 교차점을 지정할 수 있다.

도입(introduction)
기존의 클래스에 새로운 메소드나 속성을 추가한다.

대상(target)
충고를 받는 클래스를 대상이라 한다. 내가 작성한 클래스, 기능을 추가하고자 하는 써드파티 클래스. AOP가 없다면 이들 클래스는 자신의 주된 로직과 모든 횡단 관심사를 위한 로직을 함께 갖고 있어야 한다. AOP를 사용함으로 로직에만 집중할 수 있다. 충고는 알지도 못한다.

프록시(proxy)
대상 객체에 충고가 적용된 후 생성되는 객체를 말한다.

엮기(weaving)
에스펙트를 대상 객체에 적용하여 새로운 프록시 객체를 생성하는 과정을 말한다. 즉 에스펙트는 대상 객체의 지정된 결합점에 엮인다.



충고는 횡단관심사를 포함한다. 결합점이란 애플리케이션이 실행되는 동안 충고가 적용될 가능성이 있는 모든 지점을 말한다. 교차점은 충고가 어떤 결합점에 적용될 것인지를 정의한다. 교차점은 충고를 받을 결합점을 정의하는 것이다.

아직은 무슨 말을 하는지 이해가 가질 않는다.;; 많이보고 공부하고 작성하다 보면 익숙하듯, 자연스레 알게 될 것이라 확신한다.
참고 스프링 인 액션.

AND