jinfeng_wang

          G-G-S,D-D-U!

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks
          quote="firebody" ]
          至于上面所說的動態(tài)代理,給你一個(gè)更簡單的說法,比如Spring里的TransactionProxyFactoryBean,他是對支持事務(wù)管理的一個(gè)代理FactoryBean,利用動態(tài)代理,這個(gè)類可以不依賴于具體的target 接口,用戶可以隨意選擇target 接口。也不需要用戶再手工根據(jù)自己的target 接口擴(kuò)展一個(gè)TransactionProxyFactoryBean。 這樣的一個(gè)用到j(luò)ava.lang.reflect的動態(tài)代理機(jī)制,使得用戶需要編寫的代碼量大大減小,也使得整個(gè)框架配置使用趨于一致。[/quote]


          java代碼: 

                  <bean id="someObjectProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
                  <property name="proxyInterfaces">   
                           <value>ISomeInterface</value> 
                          </property>       
                          <property name="target">           
                                  <ref bean="someObject"/>       
                          </property>       
                          <property name="interceptorNames">           
                                  <list>               
                                          <value>lockMixinAdvisor</value>           
                              </list>       
                          </property>   
                  </bean>




          我奇怪的是,既然有下面這個(gè),
          java代碼: 


          <bean id="someObjectProxy" class="org.springframework.aop.framework.ProxyFactoryBean">



          那么程序代碼中, 怎么可以這樣寫?
          java代碼: 


          ISomeInterface someObjectProxy = (ISomeInterface) context
                          .getBean("someObjectProxy");


          注意,這里返回的是ISomeInterface ,而且這個(gè)someObjectProxy 對象已經(jīng)具有了ILock+I(xiàn)SomeInterface 的功能,并且在行為表現(xiàn)的完全和ISomeInterface 一致。

          如果Spring的代碼是預(yù)編譯的,那可以產(chǎn)生stub之類的,可這里是怎么實(shí)現(xiàn)的,挺讓人奇怪哦,誰能解釋一下么?

          答案 : http://www.javajia.com/article.php?id=919


          只是在這上面再封裝的完美罷了,好好研究dynamic proxy的實(shí)現(xiàn)吧。


          此外,還有這一段哦 :)

          AOP的作用可以簡單如下所說:“在一個(gè)組件的前后加上一些固定的內(nèi)容。” 拋開AOP不說,我們自己如果想要寫這東西,無非兩種方式,一個(gè)是proxy實(shí)現(xiàn),然后在proxy的前后添加內(nèi)容;還有一種就是template實(shí)現(xiàn)。
          所以在我看來,數(shù)據(jù)庫層的模板其實(shí)也算是一種“AOP”。 不知道有沒人對此有些意見和評述?

          posted on 2005-02-20 22:17 jinfeng_wang 閱讀(1023) 評論(0)  編輯  收藏 所屬分類: spring
          主站蜘蛛池模板: 遂溪县| 奉节县| 南开区| 漳平市| 鄂托克旗| 隆子县| 金阳县| 南汇区| 平原县| 驻马店市| 乃东县| 鲜城| 化德县| 吉安市| 西昌市| 喜德县| 永胜县| 云安县| 荔波县| 伊宁市| 新和县| 鄂伦春自治旗| 丹棱县| 金湖县| 岳普湖县| 岳阳市| 台东市| 江口县| 文水县| 三门峡市| 应用必备| 南昌市| 隆昌县| 宜兰市| 宁波市| 安图县| 界首市| 高安市| 英山县| 浦江县| 绥化市|