aop編程之后置通知,環繞通知和異常通知


---恢復內容開始---

此將實例將在上一講前置通知的基礎上進行配置,前置配置內容:http://www.cnblogs.com/lihuibin/p/7955947.html  具體流程如下:

1. 首先配置后置通知,繼續在上一講的aop包中新建MyAfterReturningAdvice.java類,該類要實現AfterReturningAdvice接口中的public void afterReturning(Object returnValue, Method method,Object[] args, Object target)方法。

 1 package com.LHB.aop;
 2 import java.lang.reflect.Method;
 3 import org.springframework.aop.AfterReturningAdvice;
 4 public class MyAfterReturningAdvice implements AfterReturningAdvice {
 5     @Override
 6     public void afterReturning(Object returnValue, Method method,
 7             Object[] args, Object target) throws Throwable {
 8         // TODO Auto-generated method stub
 9         //這里只是簡單說明原理,在控制台打印一下一句話就好
10         System.out.println("關閉資源....");
11     }
12 
13 }

2. 繼續新建一個MyMethodInterceptor.java類來實現環繞通知,該類實現MethodInterceptor接口中的public Object invoke(MethodInvocation invocation)方法,如下:

 1 package com.LHB.aop;
 2 import org.aopalliance.intercept.MethodInterceptor;
 3 import org.aopalliance.intercept.MethodInvocation;
 4 public class MyMethodInterceptor implements MethodInterceptor {
 5 
 6     /**
 7      * invocation:表示切入點的方法名稱,invocation的方法名框架將會自動檢測到提交到這里
 8      */
 9     @Override
10     public Object invoke(MethodInvocation invocation) throws Throwable {
11         // TODO Auto-generated method stub
12         System.out.println("調用方法前執行...");
13         //將傳來的方法加入到該切入點中
14         Object obj = invocation.proceed();
15         System.out.println("調用方法后執行...");
16         return obj;
17     }
18 
19 }

3,繼續在包下創建MyThrowsAdvice.java類,完成異常通知操作,該類實現了ThrowsAdvice接口,

然后在該類中實現public void afterThrowing(Method method, Object[] args, Object target, Exception ex)方法,在測試該異常通知時可以人為的在目標對象即testService類中的sayHello()或者sayBye()方法中加入一個錯誤語句即可,測試其他功能時再將此處的錯誤注釋掉。MyThrowsAdvice.java類如下:

 1 package com.LHB.aop;
 2 import java.lang.reflect.Method;
 3 import org.springframework.aop.ThrowsAdvice;
 4 public class MyThrowsAdvice implements ThrowsAdvice {
 5 
 6     //該方法在創建類的時候不會自動創建該方法,需要手動敲代碼,或者是去幫助文檔賦值
 7     public void afterThrowing(Method method, Object[] args, Object target, Exception ex){
 8         System.out.println("出大事了....."+ex.getMessage());
 9     }
10 }

4. 配置beans.xml文件,如下圖:

 

 5. 運行結果:

 

 

---恢復內容結束---


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM