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

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

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


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

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

      <?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>  
        
      四個bean定義的次序并不重要。我們現(xiàn)在有了一個advice,一個包含了正則表達式pointcut的advisor,一個主程序類和一個配置好的接口,通過工廠ctx,這個接口返回自己本身實現(xiàn)的一個引用。 

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

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

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

      屬性proxyInterface定義了接口類。 

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

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

      Spring工具 

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

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

      優(yōu)點和缺點 

      Spring比起其他的framework更有優(yōu)勢,因為除了AOP以外,它提供了更多別的功能。作為一個輕型framework,它在J2EE不同的部分都可以發(fā)揮作用。因此,即使不想使用Spring AOP,你可能還是想使用Spring。另一個優(yōu)點是,Spring并不要求開發(fā)團隊所有的人員都會用它。學習Spring應該從Spring reference的第一頁開始。讀了本文后,你應該可以更好地理解Spring reference了。Spring唯一的缺點是缺乏更多的文檔,但它的mailing list是個很好的補充,而且會不斷地出現(xiàn)更多的文檔。

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

      共2頁上一頁12下一頁
      來源:模板無憂//所屬分類:JSP教程/更新時間:2010-03-05
      相關JSP教程