Spring AOP—2、Spring中的AOP能為我們做些什麼 – JAVA編程語言程序開發技術文章

在介紹Spring的AOP功能前,先總結下幾個AOP的概念,下面的幾個AOP概念不是Spring指定的,而是AOP本身就有的。看看這些專業術語:

Aspect:將對多個類的關註進行統一的模塊。在Spring裡面是一個普通的類,這個類相當於一個模塊,裡面包含瞭對各種類的所有關註,使用@Aspect來表示這個類是一個表明關註方面的類。

Join point:連接點,一個程序執行中的某個點,例如一個方法的執行點或者一個意外的處理等。註意在Spring的AOP裡面這個Join point永遠是代表著一個方法的執行。

Advice:建議,對於某個Aspect所關註的執行點上執行的動作,建議的種類包括“before”(連接點前執行的動作)、“after”(連接點後面執行的動作)、“around”(包容著連接點的相關動作,這個功能最強)。同大多數AOP一樣,Spring中實現Advice也是使用攔截器,在連接點處維護著攔截器鏈表。

Pointcut:因為Join point連接點隻是一個點,當我們希望某些動作是針對多個點時,一般做法就是使用正則表達式去匹配多個連接點,這個其實就是Pointcut的工作瞭,形象的描述就是Pointcut能夠使用正則表達式“切”到多個連接點上。PointCut的表達式在AOP中很重要,Spring AOP使用的是AspectJ的Pointcut表達式語言
上面這幾個是最基礎的概念,另外還有幾個相關的也來看看:

Introduction:介紹、引入,在被關註的類上面上增加附加的方法或者域。在Spring AOP中運行向被關註的類引入新的接口。

Target Object:目標對象,這個相當於原始類,就是被關註的類對象。Spring AOP使用的是運行時代理的技術,所以目標對象始終被代理的。

AOP Proxy:AOP代理,這個是由AOP框架創建的對象,目的是為瞭實現Aspect的相關通訊(比如所建議的方法能被執行)。在Spring中可以使用JDK動態代理或者CGLIB代理;它其實是實現對Target Object的功能進行代理的作用
Weaving:編織,將關註(Aspect)同其他應用類型或者對象編織在一起創建一個被建議的對象。這個實現可以在編譯的時候、加載的時候或者運行的時候。在Spring中是在運行的時候進行交織的(weaving)。這個術語的含義就是把AOP代理同Target Object編制在一起,應用程序通過訪問AOP Proxy來實現各種Introduction、Advice。

Spring AOP的功能及其目標

Spring AOP使用的是純java實現,因此不需要再進行編譯;另外它也不需要控制類的加載順序(類的層次),所以很適合在Servlet容器或者應用服務器上使用。

Spring AOP目前隻支持方法執行的連接點。

Spring AOP目的同其他AOP的框架有所不同;其目的不是提供完整一個AOP的實現,而是把重點放在如何把AOP同IoC進行整合來解決企業應用時的一些相關問題。

所以具體例子中我們會看到Spring AOP往往同Spring IoC容器合並在一起

 

發佈留言