AOP란
- 관점 지향 프로그래밍으로 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것.
- 공통되는 거, 위에서 경험한 예제(시간을 계산하는 거)를 부가적인 관점으로 보고 비즈니스 로직에서 분리하여, 재사용한다는 것이다.
- JointPoint: Adivce(실질적으로 어떤 일을 해야할 지에 대한 것, 부가기능을 담은 것)가 적용될 위치, 끼어들 수 있는 지점. proceed로 해당 위치를 지정해준다.
AOP가 필요한 상황
- 모든 메소드의 호출 시간 측정하는 법
- 공통 관심 사항 vs 핵심 관심 사항
- 회원 가입 시간, 회원 조회 시간을 측정.
AOP적용
AOP 동작 방식 설명
DI를 통해 이것이 가능하게 한다. spring은 proxy 방식의 AOP를 사용한다.
Reference