![[Pasted image 20240220163756.png]]
AOP가 핵심기능 모듈화 + 부가기능 모듈화를 해서 합쳐준다
어드바이스,포인트컷
어드바이스 : 부가기능을 핵심기능에 언제 수행할지를 정하는 것
즉, 핵심기능이 어떻게 되냐에 따라서 부가기능을 어떻게 붙여넣을것이냐 언제 실행시킬지를 사용자가 정해줘야한다.
그 정하는 방벙이 바로 [[어드바이스]]다.
이해가 충분하지 않았을 수도 있으니 아래 그림을 살펴보자
![[Pasted image 20240220164915.png]]
이 모든 걸 통틀어서 어드바이스 라고 한다.
목적 : 여러 상황에 "대처"할 수 있도록 어드바이스를 제공한다.
내 견해 : 예외처리와 약간 유사한 부분을 가진다.
핵심기능을 언제 수행할지만 정하는게 아니라 어디에 수행할지도 정해야 한다.
그 "어디"가 바로 [[포인트컷]]이다.
![[Pasted image 20240220165346.png]]
해당하는 부분을 언제 시킬지 지정하기위해서 @Around 어드바이스를 사용했다.
![[Pasted image 20240220165618.png]]
위 그림은 포인트컷을 사용포맷이다.
너무 어려우니까 사용할 때 강의를 참고하도록 하자 해당 표현식이 나오는 시간은 08:36분이다.
https://online.spartacodingclub.kr/enrolleds/65ce18e53a01ae5d113de5b6/edetails/65ce18e53a01ae5d113de5c2?course_id=648ab7aa6038fa4a5c417e90
생각해봐야할점은 부가기능이 한 100개 정도 된다고 가정해보면, 100개의 부가기능을 execution을 넣으려고
따라다닌다면 매우 비효율적이고 시간낭비가 엄청날 것이다. 중복되는 경우도 많을 것이다.
또, 하나의 핵심기능에 여러가지 부가기능을 넣는다고 가정해본다면, 현재 배운 걸로만 따지면 그 부가기능을
처리하기위해 따라다니면서 하나하나 execution을 넣어줘야한다. 생각만해도 멀미가난다.
~~~java
뭔가,세세하게 제어해야 할 때 , 중복되는 경우가 생길 때
이렇게 포인트컷으로 만들어놓으면 메서드명으로만 가져다 사용 할 수가 있다.
![[Pasted image 20240220172353.png]]
해당하는 요청 컨트롤러에 메서드가 실행이 된다고 한다.