Spring2.0升級Spring2.0.7的變化
Spring2.0的aop果然很大改動。aop文檔開篇就介紹@Aspect注解方式的配置,其實我覺得統一aop的配置方式,并且使得它更加易用才是這次改動的成功之處。
初看schema的配置方式就覺得Spring2.0應該是用AutoProxyCreator來實現的。經過調看src,發現果然如此;同時關注了下order的實現,期望新引入的aspect和原來的advisor能并行。
(理論應該如此,可實際上Spring2.0發布的時候aspect并沒有實現order,然后我的myeclipse的xml編輯器好像用了最新的 aop schema,導致我寫xml的時候是可以寫order,我還暗喜,然后運行就出錯了~~;然后去了Spring官網,看看是不是schema的問題;看了Spring2.0.7的changelog后發現這個特性才加上~~~bug!!!不管怎么說,現在是好了,所以切記,整數的release版本是很危險的)Spring2.0.7以后修復/添加了order屬性,使得aspect和advisor都能很好的并存,對Spring來說都是 advisor/advice 拉 ^_^ 。
看了Spring2.0.7后發現aop那塊的代碼在Spring2.0到Spring2.0.7中大改了,有一個原來用來加載aop config的類都沒有了(或者是改名了)~~。現在的aop實現基本上是這樣:
AspectJAwareAdvisorAutoProxyCreator 作為啟用的默認AutoProxyCreator(如果你使用了的話AutoProxyCreator會換成 AnnotationAwareAspectJAutoProxyCreator)不過其實只是添加了搜索bean中標記了@Aspect的實例作為可用的advisor而已;order的排序方式好像也有改動,現在的排序沒有什么問題。
性能上,由于采用了單一的AspectJAwareAdvisorAutoProxyCreator ,作為唯一的advisor配置庫,在其中進行advisor的排序,所以再多的切面也只需要實例化一個bean的對象,切面在一個層次上進行,看似沒有以前那么臃腫拉 :)
Spring2.0的aop配置比較集中,很清晰,也很簡單。
【編輯推薦】