Spring AOP 源碼初窺(一) 概念

AOP是什麼

AOP全稱 Aspect-Oriented Programming 即面向切面編程。怎麼樣,是否是感受很熟悉?對,相似的還有面向過程編程(Procedure-Oriented Programming),面向對象編程(Object-Oriented Programming)。若是對後面兩種編程方式有必定的瞭解,那麼對於AOP想必也就比較容易理解了。html

就像面向對象編程,關注點在於對象,即。而面向切面編程理所固然關注於切面,那麼什麼是切面?能夠理解爲程序執行時的某個節點,或更具體一點,在某個方法執行以前執行以後返回以後等其它節點。java

幾個概念的區別

1. AspectJ

AspectJ是一個基於Java語言的AOP框架,它採用編譯時加強,會將加強目標編譯獲得一個新的AOP代理類。正則表達式

2. Spring AOP

Spring提供的AOP框架,使用了和AspectJ同樣的註解,可是經過動態生成代理類的方式生成AOP代理類。spring

3. JDK Dynamic AOP

Spring AOP中AOP代理的一種實現,使用原生JDK反射和動態代理生成AOP代理,須要代理類與目標實現相同的接口。編程

4. CGLib AOP

Spring AOP中AOP代理的另外一種實現,使用CGLib動態生成AOP代理類,須要代理類爲目標類的子類。框架

AOP術語

1. Aspect

一個切面,能夠理解爲一個切面模塊,將相關的加強內容寫進同一個切面。例如:一個負責日誌的切面。代理

2. Join Point

表明能夠由AOP加強織入的程序執行節點。日誌

3. Advice

所要作的加強處理htm

4. Pointcut

切入點,定義了將被Advice加強的一個或多個Join Point,可使用正則表達式或模式匹配。對象

5. Target object

被加強的目標對象

Adivce的種類

1. Before

方法執行以前

2. After

方法執行以後

3. After-returning

方法成功執行完成以後

4. After-throwing

方法拋出異常以後

5. Around

環繞方法執行的整個週期

參考連接

相關文章
相關標籤/搜索