Point Cut (Weaving, JointPoint)
-
weaving, JoinPoint, Pointcuts : AOP를 스프링으로 구현할 때 이러한 용어들을 씀
-
마치 뜨개질을 하듯 주업무를 꽂아놓는 과정을 의미 (weaving)
-
주업무를 join하게 될 지점(메소드)을 의미 (JoinPoint)
-
기본적으로 모든 메소드를 JoinPoint로 생각함 (모든 메소드에 대해 weaving)
-
특정 메소드만 weaving하고 싶게 정보를 지정 (Pointcuts)
-
클래스명에서 보듯 NameMatch 즉, 이름을 통해서 PointCut을 함
-
Advice와 PointCut한 것을 연결해줘야 함, 다음 시간엔 더 쉽게 할 예정
-
이번 시간엔 코드를 좀 길게 써서 해봄, 연결하기 위한 객체를 생성(classicBeforeAdvisor)
-
setter인 setAdvice라는 메소드를 advice라고 생성, 약속임
-
PointCut과 Advice를 연결함, total에 대해서만 beforeAdvice가 실행되도록
- 이전에 예외 처리를 위해 101로 설정했던 부분 1로 되돌리기
- total에 대해서만 해당 문구가 출력돼야 하는데 현재 avg에서도 출력중
- 강의에서처럼 나오도록 해결법 찾아야 함
-
생성한 Advisor는 이 부분에서 설정을 해줌
-
logBeforeAdvice 대신 써줌
- avg에선 BeforeAdvice가 정상적으로 출력되지 않는 것 확인
-
다른 Advisor를 추가할 수 있음
-
동일하게 Advisor 객체를 생성하고 Advice와 연결해줌
-
total만 로그가 많이 출력된 것을 확인할 수 있음
-
Advice-Advisor가 1대1 대응돼 불편함, 이 방법은 옛날 방식
-
다음 시간엔 더 나은 방식을 알아볼 예정
-
그 다음 시간엔 어노테이션으로 설정하는 방법을 알아볼 것