先,要明確兩個問題:
1,AOP編程可不是Spring獨有的,Spring只是支持AOP編程的框架之一,這一點非常重要,切勿搞反了關係。
2,AOP分兩類,一類可以對方法的參數進行攔截,一類是對方法進行攔截,SpringAOP屬於後者,所以Spring的AOP是屬於方法級的
那麼,Spring是如何實現AOP的?基本上來說,我們常用的有兩種方式:
1,基於@AspectJ註解的方式
2,基於XML配置的方式
本篇,我們先來談基於@AspectJ註解的實現方式
我們按照上篇文章的術語順序,來一一轉換為對應的代碼
1,創建切面(Aspect)
在Spring中,只要在類上面加上@Aspect註解,SpringIOC容器就會把這個類當做一個切面。
上述代碼,還缺什麼?
沒錯,還缺乏的是關於切點的定義,所以接下來,我們需要先來定義“連接點”,才可以將上述的信息做完善
2,創建連接點(Join point)
正如前面所述,SpringAOP是方法級的,所以我們也是以某個類的某個方法來做為連接點
3,完善之後的切面定義如下:
在原先的基礎上,添加切點的定義
4,到此為此,切面,通知(個人習慣叫業務增強),切點(SpringAOP的影響範圍),連接點(具體攔截的方法)都已集齊,而織入的工作就交給Spring框架了,我們只是按照Spring跟我們約定好的規則進行編程即可。
這就是框架的魅力,按照約定編程,剩下的實現全部交給他
5,所以,下面我們來編寫測試程序
5.1 採用XML的方式來進行配置
編寫測試類代碼:
輸出結果:
說明下:SpringAOP的配置,還有
的方式,後續我們講到聲明式事務配置的時候再說。
5.2 採用註解的方式來實現配置
編寫測試類代碼:
查看測試結果:
好了,相信大家一路看過來,對SpringAOP應該有一個非常清晰的認識了。
耗時一個上午,效率有點低了。
閱讀更多 互聯網十年老兵 的文章