隨筆-16  評(píng)論-54  文章-0  trackbacks-0

          ?????? 說(shuō)真的,對(duì)于spring提供AOP的功能,個(gè)人實(shí)在不敢太過(guò)于恭維。主要是Spring的AOP功能沒(méi)那么強(qiáng)大,而且必須是對(duì)于spring容器管理的bean才能實(shí)施AOP功能,對(duì)于容器外的bean就無(wú)能為力了。而且spring沒(méi)有提供屬性的AOP功能。在這些方面,spring AOP真的不能和Aspectj相比。Aspectj的AOP功能才真的是真正意義的AOP框架,提供的功能非常強(qiáng)大,幾乎可以實(shí)現(xiàn)任何類型的AOP。不過(guò)Aspectj的學(xué)習(xí)曲線相對(duì)要比spring AOP稍微陡峭一點(diǎn),主要是spring AOP可以當(dāng)成普通javabean來(lái)處理,而Aspectj還要另外做編譯器,比較麻煩。不過(guò),慶幸的是,eclipse下面有Aspectj插件,開(kāi)發(fā)起來(lái)也是很方便。所以一般,復(fù)雜的AOP功能,還是推薦用Aspectj

          ???? 對(duì)于一般的J2EE開(kāi)發(fā)來(lái)說(shuō),要實(shí)現(xiàn)一些比較常用的AOP,Spring 還是能滿足的。比如事務(wù)、異常、日志、權(quán)限等等,在這些方面,spring AOP還是比較方便的,特別是事務(wù)處理,spring提供了相當(dāng)好的集成。如果事務(wù)處理用Aspectj來(lái)實(shí)現(xiàn),不見(jiàn)得好多少。

          ??? 一直以來(lái),覺(jué)得spring AOP最好用的一個(gè)地方就是提供了BeanNameAutoProxyCreator,這個(gè)類真的非常方便,以至于個(gè)人一旦遇到要實(shí)現(xiàn)AOP,首先就是求組于BeanNameAutoProxyCreator,如果BeanNameAutoProxyCreator實(shí)現(xiàn)不了,再考慮別的。不過(guò),一般情況來(lái)說(shuō),BeanNameAutoProxyCreator的確能滿足需要了,除非你的需求真的千奇百怪。

          ???在應(yīng)用spring AOP功能時(shí),優(yōu)先考慮用接口。因?yàn)槿绻媒涌诘脑挘敲磗pring會(huì)創(chuàng)建一個(gè)代理,并在代理里面實(shí)現(xiàn)AOP增強(qiáng)代碼,并調(diào)用真正的實(shí)例對(duì)象。不過(guò),spring AOP功能不一定非要用接口,一些普通類也是可以的。對(duì)于普通類,spring會(huì)用CGLIB來(lái)動(dòng)態(tài)生成一個(gè)新類。并且CGLIB會(huì)保持一個(gè)生成類的cache,因此它不會(huì)一直生成新類。spring使用ProxyCallbackFilter對(duì)象把其它對(duì)象放進(jìn)map進(jìn)行管理。如果沒(méi)有管理好cache,將會(huì)產(chǎn)生大量的java對(duì)象,直至出現(xiàn)OutOfMemoryErrors。因此使用springaop時(shí),一定要正確實(shí)現(xiàn)equals and hashCode。

          ???
          不過(guò),不管怎么樣,在應(yīng)用spring AOP時(shí),還是優(yōu)先考慮接口方式,畢竟面向接口方式還是值得推薦的一個(gè)編程思想。

          posted on 2006-07-31 19:37 jspark 閱讀(4116) 評(píng)論(11)  編輯  收藏

          評(píng)論:
          # re: 關(guān)于Spring AOP和BeanNameAutoProxyCreator 2007-08-07 12:35 |
          好爛啊  回復(fù)  更多評(píng)論
            
          # re: 關(guān)于Spring AOP和BeanNameAutoProxyCreator 2008-10-17 09:25 | magic
          如果沒(méi)有管理好cache,將會(huì)產(chǎn)生大量的java對(duì)象,直至出現(xiàn)OutOfMemoryErrors。因此使用spring的aop時(shí),一定要正確實(shí)現(xiàn)equals and hashCode。

          這兩句話怎么理解啊?  回復(fù)  更多評(píng)論
            
          # re: 關(guān)于Spring AOP和BeanNameAutoProxyCreator[未登錄](méi) 2008-10-22 12:45 | a
          空談,裝大師  回復(fù)  更多評(píng)論
            
          # re: 關(guān)于Spring AOP和BeanNameAutoProxyCreator[未登錄](méi) 2008-12-01 21:54 | me
          # re: 關(guān)于Spring AOP和BeanNameAutoProxyCreator 2009-07-29 17:35 | tonywangzhao
          只有文字 沒(méi)有一點(diǎn)的說(shuō)服性 貌似說(shuō)的很有利 但是需要代碼的驗(yàn)證 鑒定完畢 謝謝  回復(fù)  更多評(píng)論
            
          # re: 關(guān)于Spring AOP和BeanNameAutoProxyCreator[未登錄](méi) 2009-10-14 13:27 | 123
          能不能舉例說(shuō)明一下啊  回復(fù)  更多評(píng)論
            
          # re: 關(guān)于Spring AOP和BeanNameAutoProxyCreator[未登錄](méi) 2009-10-14 13:27 | 123
          能不能舉例說(shuō)明一下  回復(fù)  更多評(píng)論
            
          # re: 關(guān)于Spring AOP和BeanNameAutoProxyCreator 2009-10-14 15:46 | none
          spring 的 map 是不是 weak的?
          aop難道不能singleton?
          aop一定要用在bean上?為什么不用再bean上?

          幾年過(guò)去了,樓主你睡醒了沒(méi)?  回復(fù)  更多評(píng)論
            
          # re: 關(guān)于Spring AOP和BeanNameAutoProxyCreator 2010-06-15 17:02 | mopishv0
          AspectJ是在編譯期或者后編譯期完成織入切面的
          當(dāng)然強(qiáng)大了……
          Spring只是在運(yùn)行期實(shí)現(xiàn)動(dòng)態(tài)代理罷了
          據(jù)說(shuō)他是用IoC實(shí)現(xiàn)的AOP
          不過(guò)這個(gè)帖子已經(jīng)過(guò)了很久了
          LZ找沒(méi)找到SPRING AOP的具體實(shí)現(xiàn)原理呢?
          知道的話請(qǐng)把原理告訴我吧
          mopishv0@163.com  回復(fù)  更多評(píng)論
            
          # re: 關(guān)于Spring AOP和BeanNameAutoProxyCreator 2011-10-27 10:09 | zhengb
          確實(shí)比較不知所云@我
            回復(fù)  更多評(píng)論
            
          # re: 關(guān)于Spring AOP和BeanNameAutoProxyCreator[未登錄](méi) 2012-04-13 16:09 | 111111
          啥JB玩意兒!!  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 镇平县| 龙岩市| 云安县| 福建省| 中卫市| 平度市| 镇雄县| 鸡东县| 玛曲县| 扎囊县| 咸阳市| 巍山| 景泰县| 通山县| 广州市| 分宜县| 大冶市| 建平县| 彰化市| 洞口县| 西丰县| 镇宁| 南漳县| 庆元县| 芒康县| 新巴尔虎右旗| 翁源县| 清原| 连城县| 福贡县| 昌江| 东阳市| 洪江市| 鲁甸县| 泾阳县| 五峰| 和田县| 楚雄市| 独山县| 米易县| 乡城县|