sbs spring aop

Aop 術語

鏈接點(Joinpoint)

鏈接點是程序執行的某個特定的位置,如類開始初始化前、類初始化後、累的某個方法調用前/調用後、方法拋出異常後。spring

spring僅支持方法的鏈接點,也就是:數據庫

  • 方法調用前
  • 方法調用後
  • 方法拋出異常時
  • 方法調用先後

 

切點(Pointcut)

切點和鏈接點不是一對一的關係,一個切點能夠匹配多個鏈接點。框架

鏈接點至關於數據庫中的記錄,切點至關於查詢條件。代理

在spring中,切點經過org.springframework.aop.Pointcut接口進行描述,它使用類和方法做爲鏈接點的查詢條件對象

 

加強(Advice)

加強是織入目標類鏈接點上的一段程序代碼接口

 

目標對象(Target)

加強邏輯的織入目標類get

 

引介(INtroduction)

引介是一種特殊的加強,它爲類添加一些屬性和方法。編譯器

 

織入(Weaving)

織入是將加強添加到目標類的具體鏈接點上的過程。AOP有三種織入方式io

  • 編譯期織入,這要求使用特殊的JAVA編譯器
  • 類裝載期織入,這要求使用特殊的類裝在器
  • 動態代理織入,在運行期爲目標類添加加強生成子類的方式

spring 採用動態代理織入,AspectJ採用編譯期織入和類裝在期織入編譯

 

代理(Proxy)

一個類被AOP織入加強後,就產生了一個結果類,它是融合了原類好加強邏輯的代理類。根據不一樣的代理方式,代理類很可能是和原類具備相同接口的類,也可能就是原類的子類,因此能夠採用與調用原類相同的方式調用代理類。

 

切面(Aspect)

切面由切點和加強組成,它既包括橫切邏輯的定義,也包括鏈接點的定義。

spring aop 就是負責實施切面的框架,它將切面所定義的橫切邏輯織入切面所指定的鏈接點中。

 

aop的工做中心在於如何將加強英語與目標對象的連接點上。這包括兩項工做:

  • 若是經過切點和加強定位到鏈接點上
  • 如何在加強中編寫切面的代碼

 

動態代理

spring aop 提供了兩種代理機制

基於JDK的動態代理

基於CGLIB的動態代理

提供這兩種代理機制是由於JDK自己值提供接口的代理,不支持類的代理

相關文章
相關標籤/搜索