冷血之心的部落格)
1、aop概念:
2、aop特點:
3、aop底層實現:
jdk動態**實現:
cglib動態**實現:
針對類實現**,對是否實現介面無要求。原理是對指定的類生成乙個子類,覆蓋其中的方法,因為是繼承,所以被**的類或方法最好不要宣告為final型別。
1. 定義乙個實現了methodinterceptor介面的類
2. 實現其intercept()方法,在其中呼叫proxy.invokesuper( )
**方式的選擇:
靜態**:自己編寫建立**類,然後再進行編譯,在程式執行前,**類的.class檔案就已經存在了。
動態**:在實現階段不用關心**誰,而在執行階段(通過反射機制)才指定**哪乙個物件。
4、aop原理
5、aop操作術語:
其實我們只需要這麼記憶即可:
在類裡邊可以有很多方法被增強,比如實際操作中,只是增強了個別方法,則定義實際被增強的某個方法為切入點。
增強的邏輯,稱為增強,比如擴充套件日誌功能,這個日誌功能稱為增強。包括:
把增強應用到具體方法上面的過程稱為切面。
6、aop操作案例:
匯入和aop相關的jar包
建立spring核心配置檔案,匯入aop約束
<?xml version="1.0" encoding="utf-8"
?>
xmlns=""
xmlns:xsi=
""xmlns:aop=
""xsi:schemalocation=
" /spring-beans.xsd
/spring-aop.xsd">
使用表示式配置切入點:
舉例:
package cn.ywq.aop;
public
class
book
}
package cn.ywq.aop;
import org.aspectj.lang.proceedingjoinpoint;
public
class
mybook
public
void
after1
()
//環繞通知
public
void
around1
(proceedingjoinpoint proceedingjoinpoint)
throws throwable
}
<?xml version="1.0" encoding="utf-8"
?>
xmlns=""
xmlns:xsi=
""xmlns:aop=
""xsi:schemalocation=
" /spring-beans.xsd
/spring-aop.xsd">
id="book"
class="cn.ywq.aop.book">
bean>
id="mybook"
class="cn.ywq.aop.mybook">
bean>
expression="execution(* cn.ywq.aop.book.*(..))"
id="pointcut1"/>
ref="mybook">
method="before1"
pointcut-ref="pointcut1"/>
method="after1"
pointcut-ref="pointcut1"/>
method="around1"
pointcut-ref="pointcut1"/>
aop:aspect>
aop:config>
beans>
package cn.ywq.aop;
import org.junit.test;
public
class
testanno
}
Spring的面向切面AOP
aop 面向切面 通知 advice 在什麼時機呼叫該方法 spring提供了5種通知 切點 pointcut 標註需要使用到該通知的方法的位置 切面 aspect 是通知與切點的結合 spring提供了4種各具特色的aop支援 基於 的經典aop aspectj註解驅動的切面 純pojo切面 注入...
Spring面向切面程式設計AOP
感謝zejian 大佬的分享 關於 spring aop aspectj 你該知曉的一切 大佬的分享讓我受益匪淺!首先學習aop前,弄清楚為什麼要使用aop?舉個栗子有助於理解 乙個支付轉賬的小栗子 我們每次使用手機支付時,不管轉賬還是支付都需要驗證支付資訊密碼。這時aop的好處就體現出來了,我們可...
Spring核心機制(面向切面程式設計AOP)
面向切面程式設計 aop 完善spring的依賴注入 di 面向切面程式設計在spring中主要表現為兩個方面 面向切面程式設計 aop 是對物件導向程式設計 oop 的補充,物件導向程式設計將程式分解成各個層次的物件,面向切面程式設計將程式執行過程分解成各個切面。aop從程式執行角度考慮程式的結構...