aop:
面向切面程式設計,通過預編譯和執行時動態生成的**類,對一類**進行增強的操作
核心:
在不影響原有的**的基礎上,對方法進行擴充套件,減少**的耦合性
切面 = 切入點表示式 + 通知
1.目標方法:
使用者呼叫實際的業務**
2.通知
:在切面中擴充套件目標方法的方法
3.切入點表示式:
相當於是乙個if判斷 當使用者執行目標方法時,如果滿足了切入點表示式,則執行通知方法
4.連線點:
當方法滿足切入點表示式時,該方法稱之為連線點
aop切入點表示式
1.bean(bean的id)按照bean 的id匹配 某乙個
2.within(包名.類名)按類匹配 多個
上述2項都是粗粒度.
3.execution(返回值型別 包名.類名.方法名(引數列表))
方法引數級別: 粒度較細
4.@annotation(註解名稱/註解的路徑) 按照註解匹配.
通知總類
1).前置通知 在目標方法執行之前執行
2).後置通知 在目標方法執行之後執行
3).異常通知 在目標方法執行之後報異常的
4).最終通知 不管什麼時候都要執行的通知
5).環繞通知 在目標方法前後都要執行的通知
總結:
1.前4大通知型別一般用於程式狀態的記錄.
2.環繞通知是最為強大的通知方法,可以控制目標方法的執行.可以改變程式的流轉的軌跡. 一般用於業務操作.
@component //將aop 交給spring容器管理
@aspect //標識該類為aop切面
public class testaop
//1.定義前置通知 獲取引數資料
@before("pointcut()")
public void before(joinpoint joinpoint)
}
aop快取操作
1.aop快取實現策略
1).自定義快取註解@cache_find 查詢註解
2).自定義屬性
@target(elementtype.method) //該註解對方法有效
@retention(retentionpolicy.runtime) //執行期有效
public @inte***ce cachefind
實現快取aop
實現快取aop
@aspect
@component
public class cacheaop else
} catch (throwable e)
return result;
}}
Aop 二 基本用法
1 使用aop解決日誌處理問題 aop的配置有兩種 註解方式 和 xml方式 註解方式解決日誌處理問題 步驟 1 jar包座標的引入 2 beans.xml 配置 新增命名空間 配置aop 編寫 package com.sun.aop import org.aspectj.lang.proceedi...
簡單AOP實現過程
切面類實現 aspect public class logaspects before在目標方法之前切入 切入點表示式 指定在哪個方法切入 before pointcut public void logstart joinpoint joinpoint after com.atguigu.aop.l...
簡單至及的AOP和IOC
1,google 攔截彈出式視窗,為isbn加上到amazon的鏈結 原始的html文件對google 對它做的手腳一無所知,得到原始文件後開始根據特定的匹配條件往裡面織入 最終顯示在瀏覽器裡,將少了彈出式視窗 多了isbn的鏈結 2,ctor dtor 其實傳統的支援物件導向的語言也已經不自覺的包...