실제로 동작 코드를 의미하는 Advice 와 작성한 Advice가 실제로 적용된 메소드인 Pointcut을 합친 개념으로 부가기능(로깅, 보안, 트랜잭션 등)을 나타내는 공통 관심사에 대한 추상적인 명칭.(여러 객체에 공통으로 적용되는 부가기능을 작성한 클래스 나타냄)
AOP 개념을 적용하면 핵심기능 코드 사이에 끼어있는 부가기능을 독립적인 요소로 구분해 낼 수 있고, 이렇게 구분된 부가기능 Aspect는 런타임 시 에 필요한 위치에 동적으로 참여하게 할 수 있다.
| 용어 | 설명 |
|---|---|
| Aspect | 여러 객체에 공통으로 적용되는 기능을 분리하여 작성한 클래스 |
| JoinPoint | 객체(인스턴스) 생성 지점, 메소드 호출 시점, 예외 발생 시점 등 특정 작업이 시작되는 시점 |
| Advice | JoinPoint에 삽입되어 동작될 코드, 메소드 |
| Before Advice | JoinPoint 앞에서 실행 |
| Around Advice | JoinPoint 앞과 뒤에서 실행 |
| After Advice | JoinPoint 호출이 리턴되기 직전에 실행 |
| After Returning Advice | JoinPoint 메소드 호출이 정상적으로 종료된 후에 실행 |
| After Throwing Advice | JoinPoint 예외가 발생했을 때 실행 |
| Pointcut | JoinPoint 부분 집합/실제 Advice가 적용되는 부분 |
| Introduction | 정적인 방식의 AOP 기술 |
| Weaving | 작성한 Advice(공통 코드)를 핵심 로직 코드에 삽입 |
| 컴파일 시 위빙 | 컴파일 시 AOP가 적용된 클래스 파일이 새로 생성(AspectJ) |
| 클래스 로딩 시 위빙 | JVM에서 로딩한 클래스의 바이트 코드를 AOP가 변경하여 사용 |
| 컴파일 시 위빙 | 클래스 정보 자체를 변경하지 않고, 중간에 프록시를 생성하여 경유(Spring) |
| Proxy | 대상 객체에 Advice가 적용된 후 생성되는 객체 |
| Target Object | Advice를 삽입할 대상 객체 |