스프링 프레임워크(12) AfterReturning AfterThrwoing PointCut

넙데데맨·2022년 5월 16일
0

AfterReturning Advice 구현

마찬가지로 setting.xml 지시서에 AfterReturning Bean을 생성해주고 Value에 설정해준다.

	@Override
	public void afterReturning(Object returnValue, Method method, Object[] args, Object target) throws Throwable {
		System.out.println("AR : " + returnValue);
	}

AfterReturning 함수는 주 업무 실행 후 실행되기 때문에 주 업무의 결과를 사용할 수 있다.

AfterThrowing Advice 구현

public class logAfterThrowing implements ThrowsAdvice{
	public void afterThrowing(#Exception e) throws Throwable{
		
	}
}

예외를 처리하는 Advice이기 때문에 #Exception 부분에 처리할 exception을 발생 시켜준다.

PointCut

원하는 메소드만 Weaving될 수 있도록 경계를 쳐주는 것

PointCut 설정 방법

방법 1

  1. PointCut 사용 선언을 위해 bean 생성
<bean id="classicPointCut" class="org.springframework.aop.support.NameMatchMethodPointcut">
	<property name="mappedName" value="total"/>
</bean>
  1. PointCut과 Advice 연결을 위한 Advisor bean 생성
<bean id="classicBeforeAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor">
	<property name="advice" ref="logBeforeAdvice"></property>
	<property name="pointcut" ref="classicPointCut"></property>
</bean>
  • advice와 pointcut property는 이미 정의된 property로 무조건 사용해야 한다.
  1. proxy에 advisor를 설정해준다.
<bean id="proxy" class="org.springframework.aop.framework.ProxyFactoryBean">
		<property name="target" ref="target"></property>
		<property name="interceptorNames">
			<list>
				<value>logAroundAdvice</value>
				<value>classicBeforeAdvisor</value>
				<value>logAfterReturningAdvice</value>
				<value>logAfterThrowing</value>
			</list>
		</property>
	</bean>
  • Advisor를 제외한 모든 Advice는 각각 메소드 실행마다 실행되지만 Advisor가 설정한 BeforeAdvice는 total 메소드 실행 시에만 실행된다.
profile
차근차근

0개의 댓글