日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

如何在Spring中使用AOP(2)_JSP教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

推薦:JSP教程之整合hibernate持久層3
jsp 網(wǎng)頁(yè)制作 spring整合Hibernate---- 3 問(wèn)題和解決 補(bǔ)充2 現(xiàn)象: UserAction中修改: //UserDAOdao=(UserDAO)wac.getBean(userDAO); UserDAOdao=(UserDAO)wac.getBean(userDAOProxy);//@1 配置文件中增加: beanid=userDAOProxyclass=org.springframew


我們從讀入和處理配置文件開(kāi)始,接下來(lái)馬上要?jiǎng)?chuàng)建它。這個(gè)配置文件將作為粘合程序不同部分的“膠水”。讀入和處理配置文件后,我們會(huì)得到一個(gè)創(chuàng)建工廠ctx。任何一個(gè)Spring管理的對(duì)象都必須通過(guò)這個(gè)工廠來(lái)創(chuàng)建。對(duì)象通過(guò)工廠創(chuàng)建后便可正常使用。 

僅僅用配置文件便可把程序的每一部分組裝起來(lái)。 
代碼: 

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE beans PUBLIC  "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 

<beans> 
  <!--CONFIG--> 
  <bean id="bean" class="org.springframework.aop.framework.ProxyFactoryBean"> 
    <property name="proxyInterfaces"> 
      <value>com.company.springaop.test.Bean</value> 
    </property> 
    <property name="target"> 
      <ref local="beanTarget"/> 
    </property> 
    <property name="interceptorNames"> 
      <list> 
        <value>theAdvisor</value> 
      </list> 
    </property> 
  </bean> 

  <!--CLASS--> 
  <bean id="beanTarget" class="com.company.springaop.test.BeanImpl"/> 

  <!--ADVISOR--> 
  <!--Note: An advisor assembles pointcut and advice--> 
  <bean id="theAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor"> 
    <property name="advice"> 
      <ref local="theBeforeAdvice"/> 
    </property> 
    <property name="pattern"> 
      <value>com\.company\.springaop\.test\.Bean\.theMethod</value> 
    </property> 
  </bean> 

  <!--ADVICE--> 
  <bean id="theBeforeAdvice" class="com.company.springaop.test.TestBeforeAdvice"/> 
</beans>  
  
四個(gè)bean定義的次序并不重要。我們現(xiàn)在有了一個(gè)advice,一個(gè)包含了正則表達(dá)式pointcut的advisor,一個(gè)主程序類(lèi)和一個(gè)配置好的接口,通過(guò)工廠ctx,這個(gè)接口返回自己本身實(shí)現(xiàn)的一個(gè)引用。 

BeanImpl和TestBeforeAdvice都是直接配置。我們用一個(gè)唯一的ID創(chuàng)建一個(gè)bean元素,并指定了一個(gè)實(shí)現(xiàn)類(lèi)。這就是全部的工作。 

advisor通過(guò)Spring framework提供的一個(gè)RegexMethodPointcutAdvisor類(lèi)來(lái)實(shí)現(xiàn)。我們用advisor的一個(gè)屬性來(lái)指定它所需的advice-bean。第二個(gè)屬性則用正則表達(dá)式定義了pointcut,確保良好的性能和易讀性。 

最后配置的是bean,它可以通過(guò)一個(gè)工廠來(lái)創(chuàng)建。bean的定義看起來(lái)比實(shí)際上要復(fù)雜。bean是ProxyFactoryBean的一個(gè)實(shí)現(xiàn),它是Spring framework的一部分。這個(gè)bean的行為通過(guò)一下的三個(gè)屬性來(lái)定義: 

屬性proxyInterface定義了接口類(lèi)。 

屬性target指向本地配置的一個(gè)bean,這個(gè)bean返回一個(gè)接口的實(shí)現(xiàn)。 

屬性interceptorNames是唯一允許定義一個(gè)值列表的屬性。這個(gè)列表包含所有需要在beanTarget上執(zhí)行的advisor。注意,advisor列表的次序是非常重要的。 

Spring工具 

雖然你可以手工修改Ant構(gòu)建腳本,但使用SpringUI(譯注:SpringUI現(xiàn)在是Spring framework的一部分,并改名為spring-ide),使用Spring AOP變得很簡(jiǎn)單,只要點(diǎn)點(diǎn)鼠標(biāo)即可。你可以把SpringUI安裝成Eclipse的一個(gè)plug-in。然后,你只需在你的project上右擊鼠標(biāo),并選擇“add Spring Project Nature”。在project屬性中,你可以在“Spring Project”下添加Spring配置文件。在編譯前把下面的類(lèi)庫(kù)加入project:aopalliance.jar,commons-logging.jar,jakarta-oro-2.0.7.jar和spring.jar。運(yùn)行程序時(shí)你會(huì)看到下面的信息: 

... (logging information) 
Hello world! (by com.company.springaop.test.TestBeforeAdvice) 
com.company.springaop.test.BeanImpl.theMethod() says HELLO! 

優(yōu)點(diǎn)和缺點(diǎn) 

Spring比起其他的framework更有優(yōu)勢(shì),因?yàn)槌薃OP以外,它提供了更多別的功能。作為一個(gè)輕型framework,它在J2EE不同的部分都可以發(fā)揮作用。因此,即使不想使用Spring AOP,你可能還是想使用Spring。另一個(gè)優(yōu)點(diǎn)是,Spring并不要求開(kāi)發(fā)團(tuán)隊(duì)所有的人員都會(huì)用它。學(xué)習(xí)Spring應(yīng)該從Spring reference的第一頁(yè)開(kāi)始。讀了本文后,你應(yīng)該可以更好地理解Spring reference了。Spring唯一的缺點(diǎn)是缺乏更多的文檔,但它的mailing list是個(gè)很好的補(bǔ)充,而且會(huì)不斷地出現(xiàn)更多的文檔。

分享:JSP教程之整合hibernate持久層2
使用Hibernate持久層---2出現(xiàn)的問(wèn)題與解決方法總結(jié) 現(xiàn)象1: org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname’org.springframework.aop.support.DefaultPointcutAdvisor’definedinnull:Can’tresolvereferencetobean’

共2頁(yè)上一頁(yè)12下一頁(yè)
來(lái)源:模板無(wú)憂//所屬分類(lèi):JSP教程/更新時(shí)間:2010-03-05
相關(guān)JSP教程