Spring之后置通知和异常通知
一、后置通知:
创建LogAfter.java来实现后置通知接口:
package org.ruangong.aop;
import java.lang.reflect.Method;
import org.springframework.aop.AfterReturningAdvice;
public class LogAfter implements AfterReturningAdvice{
@Override
public void afterReturning(Object returnValue, Method method, Object[] args, Object target) throws Throwable {
// TODO Auto-generated method stub
System.out.println("后置通知....");
}
}
将业务类、通知纳入IOC容器。
在applicationContext.xml文件中添加:
<bean id="logAfter" class="org.ruangong.aop.LogAfter"></bean> <aop:config> <aop:pointcut expression="execution(public void org.ruangong.service.StudentServiceImpl.addStudent(org.ruangong.entity.Student))" id="pointcut"/> <aop:advisor advice-ref="logAfter" pointcut-ref="pointcut"/> </aop:config>
在xml文件中,定义切入点一端,定义通知类另一端,通过pointcut-ref来连接。进行测试即可。
二、异常通知:
创建LogExecption.java来实现接口:
package org.ruangong.aop;
import java.lang.reflect.Method;
import org.springframework.aop.ThrowsAdvice;
public class LogExecption implements ThrowsAdvice{
public void afterThrowing(Method method,Object[] args,Object target,Throwable ex)
{
System.out.println("异常通知:目标对象:"+target+",方法名:"+method.getName()+",方法的参数:"+args.length+",异常类型:"+ex.getMessage());
}
}
将业务类和通知类纳入到ioc容器:
<!-- 异常通知 --> <bean id="logExecption" class="org.ruangong.aop.LogExecption"></bean> <aop:config> <aop:pointcut expression="execution(public void org.ruangong.service.StudentServiceImpl.addStudent(org.ruangong.entity.Student))" id="pointcut"/> <aop:advisor advice-ref="logExecption" pointcut-ref="pointcut"/> </aop:config>
进行测试,在测试之前将实现方法中studentDao=null;


浙公网安备 33010602011771号