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;

原文地址:https://www.cnblogs.com/jccjcc/p/13982765.html