1. 程式人生 > 實用技巧 >Spring之環繞通知

Spring之環繞通知

一、建立實現介面類:LogAround.java

package org.ruangong.aop;

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;

public class LogAround implements MethodInterceptor{

	@Override
	public Object invoke(MethodInvocation invocation) throws Throwable {
		// TODO Auto-generated method stub
		 	Object result = null;
		try{
		 		
		 		System.out.println("用環繞通知實現的前置通知");
		 		//invocation.proceed()之前的程式碼:前置通知
		 		result = invocation.proceed();
		 		//invocation.proceed()之後的程式碼;後置通知
		 		System.out.println("用環繞通知實現的後置通知");

		 	}catch(Exception e){
		 		System.out.println("用環繞通知實現的異常通知");
		 	}
		return result;
	}

}

  在try{}中,invocation.proceed()之前的程式碼是前置通知,invacation.proceed()之後的程式碼是後置通知。

catch中的程式碼是異常通知:

將業務類和通知類寫入ioc容器:

<!-- 環繞通知 -->
	<bean id="logAround" class="org.ruangong.aop.LogAround"></bean>
<aop:config>
		<aop:pointcut expression="execution(public void org.ruangong.service.StudentServiceImpl.addStudent(org.ruangong.entity.Student))" id="pointcut"/>
		<aop:advisor advice-ref="logAround" pointcut-ref="pointcut"/>
	</aop:config>

  測試類中進行測試:

異常通知測試: