안녕하세요, 코린이의 코딩 학습기 채니 입니다.
개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.
AOP (Aspect Oriented Programming)
- 관점 지향 프로그래밍
- 관심사의 분리해서 필요한 주업무에 모듈형식으로 삽입해 실행
- 비지니스 로직(주업무)과 공통 모듈(보조업무)로 구분한 후 비지니스 로직 코드 외부에서 필요한 시점에 공통모듈을 삽입하여 실행
☆ 관점 (Aspect)
- 구현하고자 하는 횡단 관심사의 기능 (클래스 단위)
- 한 개 이상의 Pointcut(advice를 어디에 적용할지 결정)과 Advice(부가기능) 조합으로 만들어짐
☆ Joinpoint
- 주업무 처리 메소드
- 관점을 삽입하여 Advice가 적용될 수 있는 위치
대표적인 조인 포인트
① 메소드가 호출되는 부분 또는 리턴되는 부분
② 인스턴스가 만들어지는 지점
③ 예외가 던져지는 지점
④ 클래스가 초기화 되는 곳
☆ Pointcut
- joinpoint 선정룰과 같은 개념
- 어느 클래스의 어떤 메소드, 어느 joinpoint를 사용할 것인가?
AspectJ에서는 와일드 카드를 이용한 메소드 시그니처 사용
execution(modifiers-pattern? ret-type-pattern declaring-type-pattern?name-pattern(param-pattern) throws-pattern?)
* modifiers-pattern? → 접근제한자
* ret-type-pattern → 리턴타입
* declaring-type-pattern? → 선언패턴(클래스) 어느 패키지의 어느 클래스~
* name-pattern → 메소드 이름
* (param-pattern) → 파라미터 타입
* throws-pattern? → 어떤 예외를 던지는지!
※ Pointcuts Expression API
☆ Advice
- 각 조인포인트에 삽입되어져 동작할 수 있는 코드
joinpoint와 결합하여 동작하는 시점
① Before Advice : Joinpoint 전에 실행
② Around Advice : Joinpoint 앞과 뒤에서 실행
③ After Returning Advice : Joinpoint 메소드가 리턴될 시 실행. Return된 object에 접근 가능
④ After Advice : Joinpoint 후에 무조건 실행됨 (예외 발생 시에도 실행. finally와 유사)
⑤ After Throwing Advice : Joinpoint 메소드 실행 중 예외 발생 시 실행
☆ Weaving (=Cross-Cutting)
- Pointcut에 의해서 결정된 Joinpoint에 지정된 Advice를 삽입하는 과정
weaving하는 3가지 방법
① 컴파일 시에 weaving하기
② 클래스 로딩 시에 weaving하기
③ 런타임시에 weaving하기
'Java > Spring' 카테고리의 다른 글
Spring) AOP - 특정 메소드 소요시간 계산, Escaping 처리, ErrorLog처리 (0) | 2022.08.28 |
---|---|
Spring) AOP 흐름 이해하기, 원리 및 구조 파악 (0) | 2022.08.25 |
Spring) 할일 체크하기 (0) | 2022.08.24 |
Spring) 할일 목록 조회하기(두 조건 상이하게 정렬하기), 할일 추가하기 (0) | 2022.08.24 |
Spring) Interceptor - LogInterceptor, LoginInterceptor (0) | 2022.08.24 |