上次的aop操作簡單,但對初學者而言,刪繁就簡地體現了aop的設計思想。但有些過於簡化了,本次將把引數帶入到aop的操作中。
1、修改切面處理類:改寫servicebefore(),使其含有引數
public void servicebefore2(object arg)
2、修改配置檔案:切入點表示式
3、執行結果:
【aop切面】執行日誌記錄操作。引數=member [mid=mldn, name=你好]
【資料層呼叫】member=member [mid=mldn, name=你好]
【aop切面】執行事務處理操作
false
1、修改切面處理類:改寫serviceafter(),使其含有引數
public void serviceafterreturning(object val)
2、修改配置檔案:切入點表示式
3、執行結果:
【aop切面】執行日誌記錄操作。引數=member [mid=mldn, name=你好]
【資料層呼叫】member=member [mid=mldn, name=你好]
【aop切面】操作完成,返回結果,引數為:false
false
1、修改memberserviceimpl.class
public class memberserviceimpl implements imemberservice
}
2、修改切面處理類
public void serviceafterthrowing(exception exp)
3、修改配置檔案:切入點表示式
4、執行結果
環繞通知:乙個方法處理所有操作,這種操作更像**機構,但注意:要考慮有返回值的情況!!!
1、修改切面處理類:增加環繞處理方法
public object servicearound(proceedingjoinpoint point) throws throwable);
system.out.println("【aop切面】資料層方法呼叫之後,返回值:"+retval);
return true;
}
2、修改配置檔案:切入點表示式
3、結果:可以說是很強大了!
對傳入引數和返回結果可以修改!但這樣不好,不建議這麼做。
1、修改配置檔案
其他都可以刪掉了~
2、修改切面處理類加了很多@***
@component
@aspect
public class serviceaspect2
@before(value="execution(* cn.mldn..*.*(..)) and args(param)",argnames="param")
public void servicebefore2(object arg)
@after(value="execution(* cn.mldn..*.*(..)))")
public void serviceafter()
@afterreturning(value="execution(* cn.mldn..*.*(..)))",argnames="ret",returning="ret")
public void serviceafterreturning(object val)
@afterthrowing(value="execution(* cn.mldn..*.*(..)))",argnames="e",throwing="e")
public void serviceafterthrowing(exception exp)
@around(value="execution(* cn.mldn..*.*(..)))")
public object servicearound(proceedingjoinpoint point) throws throwable);
system.out.println("【aop切面】資料層方法呼叫之後,返回值:"+retval);
return true;
}
3、執行結果
Spring學習日記(一)AOP的初步實現
工具 myeclipse 1 新建乙個web project 2 匯入spring開發包 專案檔案 右鍵 configure facets install spring facets 3 配置annotaion 4 配置aop 開啟aop命名空間 1 定義業務層操作介面 定義業務層介面 public...
Spring原始碼學習(二) AOP
aop有些特有的概念,如 advisor advice和pointcut等等,使用或配置起來有點繞,讓人感覺有些距離感,其實它的實現就是一組標準的設計模式的組合使用 factory proxy chain of responsibility,只要搞清楚這幾個設計模式,讀aop的原始碼是比較容易的。首...
Spring學習筆記 AOP
1 匯入aop模組 spring aop spring aspects 2 定義乙個業務邏輯 3 定義乙個日誌切面類 通知方法 前置通知 before 在目標方法執行之前執行 後置通知 after 在目標方法執行結束後執行 返回通知 afterrerurning 在目標方法正常返回之後執行 異常通知...