對Spring的AOP體系的一些個人想法
(1)首先spring 的aop體系相容了spring 的javabeans的配置和IOC的配置體系形成了比較風格統一,正因為spring作者Rod Johnson是aopalliance定製人之一,理所當然的spring也支援和遵守aopalliance的規範。從他的核心看來並不複雜就是透過Cglib和JDK動態代理這兩種方式實現的,預設是Cglib的方式.
(2)Spring的AOP體系實現的重擴充套件和開放的角度看是比較完美的,但是我個人覺得(不知道對不對的,大家就看看的心態好了,自己鑑別好了),使用的複雜性和AOP的開關原則又存在一些弊端(哈哈有點自大了,竟然攻擊Johnson):AOP是從更廣的抽象正交分離關注點,但是使用Spring的AOP體系方式並沒有使織入者與被織入者的關係分離(因為你還是必須寫一個的類實現MethodInterceptor,把兩者的織入關係程式碼裡寫)這就必須讓使用者的AOP觀念很強才能正常使用,初學者很難去理解.
(3)我自己認為,可以簡單的使用配置宣告織入者,被織入者和織入點(織入方式:befor/after),和織入的方法函式和被織入的方法函式,那麼後臺就能透過一個工廠直接形成一個Advisor(完全扮演了一個橫切觀念,包括被織入的程式碼片斷和織入點----代理顧問)再根據其完全可以實現一些AOP的操作,而不需要再手工去處理那麼多邏輯。不可否認這樣的開關決策必然會降低開放性和使用者的參與和改造能力,但是還是有機會可以補償的:可以開放一個核心的實現例如Cglib2AopProxy.java和JdkDynamicAopProxy給一些有志改造或需要的人員進行繼承派生就行了。畢竟AOP的核心觀念就是織入者,被織入者,織入點和織入的條件。織入的情況大多就是之前,之後,還有就是一段程式碼中(同時有之前之後).根本就可以創造一個AOP體系完成織入的使用者定義的邏輯。
(4)說了一些個人覺得說缺點的地方,我也覺得有一些偏激了,我是多麼的尊敬Rod Johnson的畢竟他是我們這些人的前輩同時很無私的提供很多優秀的觀念給我們,是時候也要說一說Spring AOP中很好的地方,第一他把AOP的過程分的更細了(我並沒有很詳細的看的程式碼體系,只是從介面的編排和一些比較核心程式碼理解的),在每一個環節中很好的分離面出來。提供了很多最佳化服務:例如Cache,區分單例項,和非單例項實現;同時也提出支援配置過濾函式名的織入方法,也提供了不少虛類,給使用者去改造(但是框架改造的難度比較大,還不如自己寫了)
(5)我自己正著手寫包含一個簡單AOP體系的開源專案,如果大家有什麼不同的看法或覺得我說的不對的地方請指出來,小弟十分的感謝.
(2)Spring的AOP體系實現的重擴充套件和開放的角度看是比較完美的,但是我個人覺得(不知道對不對的,大家就看看的心態好了,自己鑑別好了),使用的複雜性和AOP的開關原則又存在一些弊端(哈哈有點自大了,竟然攻擊Johnson):AOP是從更廣的抽象正交分離關注點,但是使用Spring的AOP體系方式並沒有使織入者與被織入者的關係分離(因為你還是必須寫一個的類實現MethodInterceptor,把兩者的織入關係程式碼裡寫)這就必須讓使用者的AOP觀念很強才能正常使用,初學者很難去理解.
(3)我自己認為,可以簡單的使用配置宣告織入者,被織入者和織入點(織入方式:befor/after),和織入的方法函式和被織入的方法函式,那麼後臺就能透過一個工廠直接形成一個Advisor(完全扮演了一個橫切觀念,包括被織入的程式碼片斷和織入點----代理顧問)再根據其完全可以實現一些AOP的操作,而不需要再手工去處理那麼多邏輯。不可否認這樣的開關決策必然會降低開放性和使用者的參與和改造能力,但是還是有機會可以補償的:可以開放一個核心的實現例如Cglib2AopProxy.java和JdkDynamicAopProxy給一些有志改造或需要的人員進行繼承派生就行了。畢竟AOP的核心觀念就是織入者,被織入者,織入點和織入的條件。織入的情況大多就是之前,之後,還有就是一段程式碼中(同時有之前之後).根本就可以創造一個AOP體系完成織入的使用者定義的邏輯。
(4)說了一些個人覺得說缺點的地方,我也覺得有一些偏激了,我是多麼的尊敬Rod Johnson的畢竟他是我們這些人的前輩同時很無私的提供很多優秀的觀念給我們,是時候也要說一說Spring AOP中很好的地方,第一他把AOP的過程分的更細了(我並沒有很詳細的看的程式碼體系,只是從介面的編排和一些比較核心程式碼理解的),在每一個環節中很好的分離面出來。提供了很多最佳化服務:例如Cache,區分單例項,和非單例項實現;同時也提出支援配置過濾函式名的織入方法,也提供了不少虛類,給使用者去改造(但是框架改造的難度比較大,還不如自己寫了)
(5)我自己正著手寫包含一個簡單AOP體系的開源專案,如果大家有什麼不同的看法或覺得我說的不對的地方請指出來,小弟十分的感謝.
相關文章
- 對比華為的cloudIDE和coding的cloud studio及個人的一些想法CloudIDE
- 關於 Spring-WebFlux 的一些想法SpringWebUX
- 關於Spring AOP與IOC的個人思考Spring
- 對做“網際網路產品”的一些想法
- Spring AOP與AspectJ的對比及應用Spring
- Spring 的 AOPSpring
- Spring的AOPSpring
- Spring創始人Rod大叔對YAML的真實想法SpringYAML
- 對於Spring中AOP,DI,IoC概念的理解Spring
- 大家不妨組織一些開源專案,或者面向具體應用的興趣小組(個人想法)
- 四、Spring的AOPSpring
- spring 的aop,急Spring
- Spring 中的AOPSpring
- 對MQTT和CoAP的一些個人見解MQQT
- 對於公司,也是我對軟體行業,軟體專案的五想法行業
- 資料庫容量和記憶體測算的一些想法資料庫記憶體
- Spring原始碼-AOP(六)-AOP代理的建立Spring原始碼
- 我對英文翻譯的一些個人偏見
- 對JAVA的一些個人總結——物件導向Java物件
- 財務自開發系統的一些想法(實現篇)
- 財務系統自開發的一些想法(理論篇)
- 隨機性設計的一些想法隨機
- 程式設計師買房的一些想法程式設計師
- 關於Python 3的一些想法Python
- 關於新書出版的一些想法新書
- Spring AOP 對Spring MVC的Controller切面攔截不起作用SpringMVCController
- 使用DDD重新思考ERP系統的一些初步想法 –feststelltasteAST
- 對 Android SDK 開發的一些個人心得Android
- 眾家對融合基礎的想法
- Spring AOP的實現原理Spring
- Spring AOP的AspectJ註解Spring
- spring3.0.5的aop使用Spring
- 我對空資料頁面等公共頁面實現的一些想法
- 一個開源工作者對開源與賺錢的一些想法
- 關於讀書分享會的一些想法
- 關於演算法的一些想法 (轉)演算法
- 關於三層架構的一些想法架構
- linux-HA 系統運用在pg資料庫的一些想法Linux資料庫