Spring AOP 織入初探–通過架構看實現

NO IMAGE

        最近靜下心來回歸技術書籍,一方面準備SCJP,一方面想把一些框架好好研究一下,倒不是應用,只是覺得以前頗少關注這些東西的實現,而現在越來越覺得,好的框架的設計思想很值得學習,而且對於應用方面也會有質的提升。於是就先從Spring入手吧。

       IOC在此就不談了,懂得動態代理的童鞋都知道就是那麼回事,再加點反射機制。AOP並不是Spring的專利,但是Spring提供的AOP實現卻差不多夠用了。這篇文章主要談談有關AOP織入的幾個東東。先容我用封塵已久的EA畫個小圖……

 

       上面這張簡單列出了AOP核心類圖。左邊可以看做一個抽象工廠模式,建立AopProxy。這裡有兩種Aop代理。一種是常用的Jdk中的Proxy實現,另一種是通過Cglib來實現的。前者在有介面指明的情況下才可以用。這取決於jdkAPI固有的實現方式。

       其實看Spring文件也好,各類書記也好,都把一些概念織入了我們大腦,神馬joinpoint,advice,pointcut,introduction,targrt,proxy,weaving云云。去記這些新概念之類的還不如親身體驗一下Spring的奧妙。其實說AOP,很多人想到的就是日誌,驗證,事務。瞭解了AOP的實質,就會發現,它可以很輕便的讓我們控制,而不是限定在某些應用了。需要快取就加入快取,通過before的advice。很多時候學習一種框架,學習一門技術,也是要迭代式的。邊用邊學邊看邊體會。

      我也是去年9,10月份學SSH的,但當時一直沒有用,也只是停留在小專案小程式碼的階段。很快也就忘記了,至於實現方式,神馬動態代理,反射了也只知道一點點。但現在剖開Spring的程式碼,才發現,設計模式紛繁複雜,程式碼結構精巧靈活。我們在不追求什麼設計模式,不追求華麗實現的時候,往往自然而然地達到了目的了。還記得校招的時候聽聶風說,淘寶剛開始也沒有想去盈利,前幾年一直是入不敷出的,但是在做的時候,在把客戶第一作為目標的時候一點點實現,隨之而來的金錢也是自然而然的。而這種收穫所帶來的喜悅和一開始就以盈利為目的所得到的結果來說,肯定是感受不同的。

       寫得有點零散了,其實主要是要把小圖乘上,有時候想不起來AOP了,看看這張圖會牽出很多思緒的。要午睡了,今天先到這兒~

       最後,奉上一點程式猿的冷笑話,生活繁忙而充實,不忘冷冷一笑:

       一位IT經理走進一家麵館,問?:“你們需要客戶端嗎?”老闆答,面一般是夥計端,忙的時候才要客戶端。

  • 864094ec-e5a5-3699-9056-096c8461edb9-thumb.jpg
  • 大小: 131.5 KB