10-Spring-AOP編程實現-實踐得真知-上篇(耗時一個上午製作)

先,要明確兩個問題:

1,AOP編程可不是Spring獨有的,Spring只是支持AOP編程的框架之一,這一點非常重要,切勿搞反了關係。

2,AOP分兩類,一類可以對方法的參數進行攔截,一類是對方法進行攔截,SpringAOP屬於後者,所以Spring的AOP是屬於方法級的

那麼,Spring是如何實現AOP的?基本上來說,我們常用的有兩種方式:

1,基於@AspectJ註解的方式

2,基於XML配置的方式

本篇,我們先來談基於@AspectJ註解的實現方式

我們按照上篇文章的術語順序,來一一轉換為對應的代碼

1,創建切面(Aspect)

在Spring中,只要在類上面加上@Aspect註解,SpringIOC容器就會把這個類當做一個切面。

10-Spring-AOP編程實現-實踐得真知-上篇(耗時一個上午製作)

上述代碼,還缺什麼?

沒錯,還缺乏的是關於切點的定義,所以接下來,我們需要先來定義“連接點”,才可以將上述的信息做完善

2,創建連接點(Join point)

正如前面所述,SpringAOP是方法級的,所以我們也是以某個類的某個方法來做為連接點

10-Spring-AOP編程實現-實踐得真知-上篇(耗時一個上午製作)

10-Spring-AOP編程實現-實踐得真知-上篇(耗時一個上午製作)

3,完善之後的切面定義如下:

在原先的基礎上,添加切點的定義

10-Spring-AOP編程實現-實踐得真知-上篇(耗時一個上午製作)

4,到此為此,切面,通知(個人習慣叫業務增強),切點(SpringAOP的影響範圍),連接點(具體攔截的方法)都已集齊,而織入的工作就交給Spring框架了,我們只是按照Spring跟我們約定好的規則進行編程即可。

這就是框架的魅力,按照約定編程,剩下的實現全部交給他

5,所以,下面我們來編寫測試程序

5.1 採用XML的方式來進行配置

10-Spring-AOP編程實現-實踐得真知-上篇(耗時一個上午製作)

編寫測試類代碼:

10-Spring-AOP編程實現-實踐得真知-上篇(耗時一個上午製作)

輸出結果:

10-Spring-AOP編程實現-實踐得真知-上篇(耗時一個上午製作)

說明下:SpringAOP的配置,還有的方式,後續我們講到聲明式事務配置的時候再說。

5.2 採用註解的方式來實現配置

10-Spring-AOP編程實現-實踐得真知-上篇(耗時一個上午製作)

編寫測試類代碼:

10-Spring-AOP編程實現-實踐得真知-上篇(耗時一個上午製作)

查看測試結果:

10-Spring-AOP編程實現-實踐得真知-上篇(耗時一個上午製作)

好了,相信大家一路看過來,對SpringAOP應該有一個非常清晰的認識了。

耗時一個上午,效率有點低了。


分享到:


相關文章: