AOP
AOP ?
AOP란 관점 지향 프로그래밍이다.
- OOP를 보완하는 구조
- OOP에서는 '클래스' 단위로 모듈화 / AOP 에서는 '관점'으로 모듈화
- 흩어진 Aspect를 모듈화 할 수 있는 프로그래밍 기법
- 특정한 함수 호출 전이나 후에 공통적으로 처리해줘야할 때 활용
- 공통적인 기능과 핵심 기능을 구현 분리하는 것이 핵심이다.

- Aspect안에 Concerns ( 여러 클래스 또는 여러 메소드에 나타나는 비슷한 코드들 )를 정의 / 어디에 적용시킬지 명시
AOP의 기본 개념들
1. Aspect : 흩어진 관심(Crosscuttin Concerns)을 묶어서 모듈화한것
Advice와 Point Cut이 들어간다.
가장 많이 활용되는 부분은 Transaction 기능
2.Advice
AOP가 동작하면서 실제로 적용되는 기능 ( 로깅, 트랜잭션, 인증) 을 뜻한다.
해야할 일들에 대한 정보를 가지고 있다.
3. Join point
Aspect를 넣어줄 수 있는 특정 포인트 ( 연결 가능한 지점 )
가장 흔한 Join Point는 메서드 실행 시점이다.
4. Target Object
Advice가 적용될 대상 오브젝트 예)A,B,C 클래스
5. Point Cut
실제 Advice가 적용될 지점
예 ) A클래스의 B메소드에 적용 : target-A클래스 / PointCut-B클래스
5. AOP Proxy
특정 클래스에 AOP을 입혀줄때 해당 클래스의 AOP를 겉에 한번더 씌워주는 클래스를 말한다.
6. Weaving
Advice를 비즈니스 로직 코드에 삽입하는 것