一、后置通知:
创建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;
原文:https://www.cnblogs.com/jccjcc/p/13982765.html