프로그래밍 공부/Spring

[Spring] Point Cut

valid_ming 2021. 5. 5. 15:59

 

뉴렉처 강사님의 동영상 강의를 정리한 글입니다.

 

 

weaving(뜨개질)

: 부가 로직을 호출하고 부가 로직 실행 중에 주 업무가 실행되는 것을 말함

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와 하나씩 붙여줘야 한다는 점이다.