프로그래밍 공부/Spring
[Spring] Point Cut
valid_ming
2021. 5. 5. 15:59
뉴렉처 강사님의 동영상 강의를 정리한 글입니다.
weaving(뜨개질)
: 부가 로직을 호출하고 부가 로직 실행 중에 주 업무가 실행되는 것을 말함

JoinPoint
: 부가 로직이 대상으로 삼는 주 업무 메서드. 부가 로직에서 연결해야 할 포인트 점이 되는 곳
Pointcuts
기본적으로 proxy는 target class의 모든 메서드를 JoinPoint로 생각한다.
특정 메서드만 weaving 하기 위해서는 별도의 정보가 필요하다. 이것을 point cuts라고 한다.
Advice 별로 pointcut을 사용할 수 있다.
Advice를 pointcut과 연결해주는 Advisor
<bean id="classicPointCut" class="org.springframework.aop.support.NameMatchMethodPointcut">
<property name="mappedName" value="total"/>
</bean>
<bean id="classicBeforeAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor">
<property name="advice" ref="logBeforeAdvice"/>
<property name="pointcut" ref="classicPointCut"/>
</bean>
- Point cut 생성: mappedName property에 weaving 하고 싶은 method를 넣는다
- Advisor 생성: advice와 pointcut을 설정해준다.
위 코드는 total만 실행하도록 하는 pointcut 정보를 만들고, logBeforeadvice와 classicPointcut을 연결한다.
실행 결과 Before Advice는 total 함수에서만 실행된 것을 확인할 수 있다.
고전적인 이 방법의 단점은 모든 pointcut에 대해 하나의 advisor을 생성하여 advise와 하나씩 붙여줘야 한다는 점이다.
