AOP는 OOP를 보완하는 프로그래밍 기법이다.
OOP는 클래스가 모듈화의 기본단위라면
AOP는 Aspect가 모듈화의 기본단위이다.
Aspect는 트랜잭션 관리와 같은 공통적인 관심사를 모듈화해서 여러 클래스에 걸쳐서 적용할 수 있게 해준다.
이런 공통 관심사를 cross-cutting concerns 라고 부른다.
AOP Concept
AOP 용어 정리
여기서 나오는 용어는 Spring에 한정된 것이 아님.
- Aspect
- 관심사를 모듈화한 것
- e.g.) 트랜잭션 관리, 로깅
- JoinPoint
- 프로그램이 실행되는 순간으로, AOP에서 Aspect가 적용될 수 있는 지점
- 실행되는 메서드 정보 제공함
- 어떤 메서드가 실행되거나, 예외가 발생하는 순간 등이 전부 joinPoint
- Advice
- aspect가 무엇을 언제 해야할지 정의
- 메서드가 실행되기 전 이 작업을 해라
- 메서드가 끝난 후에 이 작업을 해라
- around, before, after
- Pointcut
- 어드바이스가 언제 실행될 지 정하는 것 → join point 중 하나를 선택한 것 정도의 개념?
- Introduction