Spring : AOP (Aspect – Oriented Programming)
애플리케이션 전체에 걸쳐 사용되는 기능을 재사용하도록 지원하는 것
AOP의 장점
AOP 키워드들
![]()
Aspect
- 흩어진 관심사를 모듈화 한 것 ( 여러 핵심 기능에 적용될 관심사 모듈 )
- 구체적인 기능을 구현한 Advice와
어디에서 적용될지를 결정하는 PointCut을 포함- AOP의 기본 모듈-
singleton
형태의 객체로 존재Advice
- 타겟에 제공할 부가기능을 담고 있는 모듈 ( 실질적인 부가기능을 담은 구현체 )
- 실질적으로 어떤 일을 해야할 지에 대한 것
- Aspect가 무엇을 언제 적용할지를 정의
PointCut
- 공통 기능이 적용될 대상 결정
- Advice를 적용할 Target의 메서드를 선별하는 정규 표현식
- JoinPont의 상세한 스펙을 정의한 것
- execution으로 시작하고 메서드의 Signature를 비교하는 방법을 주로 이용
JoinPont
- Advice가 적용될 위치, 끼어들 수 있는 지점
- 타겟 객체가 구현한 인터페이스의 모든 메서드는 Joinpoint가 됨
- 메서드 진입 지점, 생성자 호출 시점, 필드에서 값을 꺼내올때 등 다양한 시점에 적용
Target
- 핵심 기능을 담은 모듈 (=부가 기능 부여 대상)
- Advice를 받는 객체이고, pointcut으로 결정된다
Advisor
- 스프링 AOP에서만 쓰는 용어로, 하나의 Advice와 하나의 pointcut으로 구성된 Aspect를 특별하게 지칭하는 말이다