AOP 용어
1. Advice - aspect 의 실제 구현체, 실제 구현한 코드를 포함
2. Aspect - 구현하고자 하는 횡단 관심사의 기능. 즉, 애플리케이션의 모듈화하고자 하는 부분을 에스펙트 또는 영역이라고 한다.
3. joinpoint - aspect 를 플러그인할 수 있는 애플리케이션의 실행지점
4. pointcut - Advice 가 어느 jointpoint 에 적용될지 정의
5. introduction - 도입(introduction) 은 기존의 클래스에 새로운 메소드나 속성을 추가한다.
6. target - Advice 를 받을 대상
7. Proxy - 대상 객체에 Advice 가 적용된후 생성된 객체
8. Weving(엮기) - Aspect 를 대상 객체에 적용하여 새로운 프록시 객체를 생성하는 과정
Weving 가능 지점
- 컴파일시 : 대상 클래스의 컴파일시 에스펙트엮기 가능
- 클래스 로딩시 : JVM 에 로딩될때 가능
- 런타임시 : 애플리케이션 실행중 어떤 시점에서 엮기가능
Spring AOP 구현
1. Spring의 Advice 는 자바로 작성
2. Spring의 객체에 대한 Advice 는 런타임시 이루어진다.
3. Spring은 AOP연맹의 인터페이스를 구현한다.
4. Spring은 메소드 결합점만 제공한다.
- Spring은 메소드 결합점만 지원함으로써 객체 필드의 갱신을 가로챌 수 있는 등의 자세한 충고 생성은 불가능하다.
( Spring API 를 이용한 AOP구현
POJO 클래스를 이용한 AOP구현
AspectJ 5 에서 정의한 @Aspect 어노테이션 기반의 AOP구현