Spring學習日記(二)AOP的深入操作

2021-08-27 11:01:57 字數 2832 閱讀 5339

上次的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 在目標方法正常返回之後執行 異常通知...