마찬가지로 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 함수는 주 업무 실행 후 실행되기 때문에 주 업무의 결과를 사용할 수 있다.
public class logAfterThrowing implements ThrowsAdvice{
public void afterThrowing(#Exception e) throws Throwable{
}
}
예외를 처리하는 Advice이기 때문에 #Exception 부분에 처리할 exception을 발생 시켜준다.
원하는 메소드만 Weaving될 수 있도록 경계를 쳐주는 것
<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>
<property name="pointcut" ref="classicPointCut"></property>
</bean>
<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>