본 코드가 실행후 실행되는 AOP
<!--setting.xml side -->
<beans>
<bean id="target" class="spring.aop.entity.NewlecExam"
p:kor="1" p:eng="1" p:math="1" p:com="1" />
<bean id="LogAfterReturningAdvice"
class="spring.aop.advice.LogAfterReturningAdvice" />
<bean id="proxy"
class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target" ref="target" />
<property name="interceptorNames">
<list>
<value>logAfterReturningAdvice</value>
</list>
</property>
</bean>
</beans>
//LogAfterReturningAdvice.class side
package spring.aop.advice;
import java.lang.reflect.Method;
import org.springframework.aop.AfterReturningAdvice;
public class LogAfterReturningAdvice implements AfterReturningAdvice{
@Override
public void afterReturning(Object returnValue, Method method,
Object[] args, Object target) throws Throwable{
System.out.println("returnValue:"+returnValue
+", method:" +method.getName());
/*
returnValue 는 메서드의 반환값을 호출하고
method.getName은 실행된 메서드명을 호출한다.
*/
}
}
예외 발생시 실행되도록 하는 AOP
<!--setting.xml side -->
<beans>
<bean id="target" class="spring.aop.entity.NewlecExam"
p:kor="1" p:eng="1" p:math="1" p:com="1" />
<bean id="LogAfterThrowingAdvice"
class="spring.aop.advice.LogAfterThrowingAdvice" />
<bean id="proxy"
class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target" ref="target" />
<property name="interceptorNames">
<list>
<value>logAfterThrowingAdvice</value>
</list>
</property>
</bean>
</beans>
//LogAfterThrowingAdvice.class side
package spring.aop.advice;
import org.springframework.aop.ThrowsAdvice;
public class LogAfterThrowingAdvice implements ThrowsAdvice
{
public void afterThrowing(IllegalArgumentException e) throws Throwable{
System.out.println("예외가 발생하였습니다."+ e.getMessage())
}
}