AOP(Aspected Oriented Programming)
: 관점지향 프로그래밍. 객체지향 프로그래밍에서 사용
공통적인 기능을 따로 분리해 모듈화
-> XML 또는 annotation으로 이용 가능
AOP의 주요 개념
Join Point
: 실행가능한 특정 위치. 지점 or 연결고리
Pointcut
: 어떤 point에 어떤 Join Point를 사용할지 결정하는 선택 기능
특정 클래스에 있는 모든 메소드 호출
Advice
: 결합점. Join Point에 삽입되어 동작하는 코드
Advice 결합점 결합 타입
- Before advice : jointpoint 전에 수행되는 advice
- AFter returning advice : joinpoint 성공적으로 리턴 후 동작하는 advice
- After throwing advice : 예외 발생으로 joinpoint 빠져나갈때 수행
- After advice : joinpoint를 빠져나가는 (정상or예외) 방법에 상관없이 수행
- Around advice : jointpoint 전, 후에 수행
Aspect
: 실행되어야하는 로직과, 실헝되어야 하는 지점
Advice와 Pointcut의 조합
Weaving
: Pointcut에 의해 결정된 JoinPoint에 지정된 Advice를 삽입하는 과정
세트처럼 결합하게 됨
Weaving 방식
1. 런타임 시 엮기
2. 컴파일 시 엮기
3. 클래스 로딩 시 엮기
-> 수정 시 Advice만 변경하면 된다
AOP 장점
- 중복 코드 제거
- 비즈니르 로직 가독성 향상
- 생산성 향상
- 재사용성 향상
- 변경 용이성 증대