AOP의 용어 및 개념들
애스팩트(Aspect)
- 여러 객체에 공통으로 적용되는 기능입니다. (공통 기능)
- 어드바이스 + 포인트컷을 모듈화 하여 애플리케이션에 포함되는 횡단 기능입니다.
- 여러 어드바이스와 포인트컷이 함께 존재합니다.
조인 포인트(Join Point)
S는 메서드 실행 전의 포인트이고 E는 메서드 수행 후의 포인트입니다.
이러한 포인트를 어드바이스가 적용될 조인 포인트라고 부릅니다.
- 클래스 초기화, 객체 인스턴스화, 메서드 호출, 필드 접근, 예외 발생과 같은 애플리케이션 실행 흐름에서의 특정 포인트를 의미합니다.
- 애플리케이션에 새로운 동작을 추가하기 위해 조인포인트에 관심 코드(aspect code)를 추가할 수 있습니다.
- 횡단 관심은 조인포인트 전/후에 AOP에 의해 자동으로 추가됩니다.
- 추상적인 개념이고 AOP를 적용할 수 있는 모든 지점이라 생각하면 됩니다.
- 스프링 AOP는 프록시 방식을 사용하므로 조인 포인트는 항상 메서드 실행 지점으로 제한됩니다.
- 어드바이스 적용이 필요한 곳은 애플리케이션 내에 메서드를 갖습니다.
어드바이스(Advice)
- 조인포인트에서 수행되는 코드를 의미합니다.
- Aspect를 언제 핵심 코드에 적용할지를 정의합니다.
- 시스템 전체 Aspect에 API 호출을 제공합니다.
- 위 그림처럼 메서드를 호출하기 전에 각 상세 정보와 모든 메서드를 로그로 남기기 위해 메서드 시작 전의 포인트인 조인포인트 S를 선택합니다.
- 부가 기능에 해당 됩니다.
포인트컷(Pointcut)
- 조인 포인트 중에서 어드바이스가 적용될 위치를 선별하는 기능입니다.
- AspectJ 표현식을 사용해서 지정합니다.
- 프락시를 사용하는 스프링 AOP는 메서드 실행 지점만 포인트컷으로 선별 가능합니다.
위빙(Weaving)
- 포인트컷으로 결정한 타겟의 조인 포인트에 어드바이스를 적용하는 것입니다.
- Advice를 핵심 코드에 적용하는 것을 의미합니다.
- 핵심 기능 코드에 영향을 주지 않고 부가 기능을 추가할 수 있습니다.
- AOP 적용을 위해 Aspack 객체에 연결한 상태입니다.
- 컴파일 타임(AspectJ compoiler)
- 로드 타입
- 런타임, 스프링 AOP는 런타임, 프록시 방식입니다.
AOP 프록시(proxy)
- AOP 기능을 구현하기 위해 만든 프록시 객체입니다.
- 스프링에서 AOP 프록시는 JDK 동적 프록시 또는 CGLIB 프록시입니다.
타겟(Target)
- 핵심 기능을 담고 있는 모듈로 타겟은 부가기능을 부여할 대상이 됩니다.
- Advice를 받는 객체이고 포인트컷으로 결정됩니다.
어드바이저(Advisor)
- 하나의 어드바이스와 하나의 포인트 컷으로 구성됩니다.
- 스프링 AOP에서만 사용되는 특별한 용어입니다.
'Spring' 카테고리의 다른 글
[Spring] 포인트컷(Pointcut) 표현식 (0) | 2023.04.12 |
---|---|
[Spring] 타입별 어드바이스(Advice) (0) | 2023.04.12 |
[Spring] AOP(Aspect Oriented Programming)가 필요한 이유 (0) | 2023.04.11 |
[Spring] DI(Dependency Injection) 종합 실습 (0) | 2023.04.10 |
[Spring] 다양한 의존 관계 주입 방법 (0) | 2023.04.09 |