aop 面向切面程式設計,是 oop (物件導向程式設計)的補充
橫切關注點:方法中非主要業務邏輯部分
比如運算的模組:有驗證引數、執行方法前的操作、執行方法、執行方法後的操作,驗證引數、執行方法前後的操作是橫切關注點
比如許可權驗證模組:在執行增刪改查等方法前要進行驗證,主要業務邏輯其實是增刪改查,驗證許可權是橫切關注點
比如日誌模組:執行某方法前後都要生成檔案或者往檔案寫入記錄,日誌記錄是橫切關注點
切面:橫切關注點的抽象到乙個類中
就是把橫切關注點封裝成乙個類,在主要業務邏輯執行根據情況來呼叫
宣告切面的步驟:1,把該類放入 ioc 容器,進行管理;2,使用註解 @aspect 表明這是乙個切面
通知:是切面類中的方法,用於在目標方法執行時執行
前置通知(@before):目標方法執行前
後置通知(@after):目標方法執行後,無論是否發生異常
返回通知(@afterrunning):目標方法正常結束後執行,可以知道目標方法的返回值
異常通知(@afterthrowing):目標方法產生異常時執行,可以訪問異常物件,進行列印,也可以指定異常才執行
環繞通知@(around):包含上面4種
宣告通知的步驟:1,指明通知型別;2,指明目標方法;3,配置檔案使通知生效
連線點:用於獲取目標方法的詳細資訊,方法名,引數值;joinpoint
示例:
/*** .切面類
* .第一步:新增 @aspect 註解
* .第二步:新增 @component 註解
* .第三步:指明通知型別和目標方法 */
AspectJ基於註解的AOP 實現
配置檔案 demo aspect public class myaspect signature signature joinpoint.getsignature system.out.println 方法的定義簽名signature signature string name joinpoint....
AspectJ基於xml和基於註解
一 基於xml 執行的切入點中具體方法有返回值,則方法結束會立即執行後置通知,然後再執行環繞通知的放行之後的 2 連線點即所有可能的方法,切入點是正真被切的方法,連線點方法名 其中,只有環繞通知的切入點引數不一樣,是可以放行的切入點 3 異常通知是處理異常 切面類中的異常通知的方法引數列表中異常引數...
spring之基於aspectj註解aop使用
在配置檔案中開啟aop自動 1 在增強類上面使用 aspect註解 2 在增強方法上面配置不同型別通知 增強類 aspect public class myuser 後置通知 afterreturning value execution cn.aop.user.update public void ...