直掛云帆濟(jì)滄海,展翅遨翔登九天!

          我要飛得更高...

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            19 隨筆 :: 0 文章 :: 5 評(píng)論 :: 0 Trackbacks
          SpringapplicationContext.xml中配置映射文件的方法:
          1。減少配置文件里配置信息的數(shù)量
          配置applicationContext.xml或者分布在其它的xml文件中的bean時(shí),設(shè)置bean與bean之間的相互依賴關(guān)系是一件痛苦且容易出錯(cuò)的事。autowire屬性的出現(xiàn)減輕了配置文件的容量。
          <bean>的autowire屬性有6個(gè)值。分別為:

          No:即不啟用自動(dòng)裝配。Autowire默認(rèn)的值。

          byName:通過(guò)屬性的名字的方式查找JavaBean依賴的對(duì)象并為其注入。
          byType:通過(guò)屬性的類型查找JavaBean依賴的對(duì)象并為其注入。
          constructor:通byType一樣,也是通過(guò)類型查找依賴對(duì)象。
          autodetect:在byTypeconstructor之間自動(dòng)的選擇注入方式。
          default:由上級(jí)標(biāo)簽<beans>default-autowire屬性確定。
          在<beans default-autowire="byName">可以為本xml文件設(shè)置默認(rèn)的自動(dòng)裝配的類型例如byName,當(dāng)然在設(shè)置具體的<bean id="***" class="***" autowire="byType">時(shí),會(huì)自動(dòng)改變默認(rèn)的byName為byType。
          2。在web.xml中通過(guò)配置如下參數(shù)

              <context-param>
                  <param-name>contextConfigLocation</param-name>
                  <param-value>classpath*:spring/*.xml</param-value>
              </context-param>   
          會(huì)自動(dòng)把WEB-INF/classes/sring目錄下的所有以.xml結(jié)尾的文件加載spring容器進(jìn)行管理,而不必手動(dòng)編寫每個(gè)applicationContex.xml,accessContext.xml等配置文件。
          3。利用屬性為mappingDirectoryLocation來(lái)配置相關(guān)的目錄位置,從而避免為該目錄下的所有文件名進(jìn)行配置
          <property name="mappingDirectoryLocation">
          <list>
          <value>classpath:/package1/<value>
          </list>
          </property>
          如:
          <!-- 設(shè)置Hibernate3的SessionFactory -->
              <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
                  <property name="dataSource">
                      <ref bean="dataSource"/>
                  </property>
                  <property name="hibernateProperties">
                      <props>
                          <prop key="hibernate.dialect">net.sf.hibernate.dialect.SQLServerDialect</prop>
                          <prop key="hibernate.show_sql">true</prop>
                          <prop key="hibernate.generate_statistics">true</prop>
                          <prop key="hibernate.connection.release_mode">auto</prop>
                          <prop key="hibernate.autoReconnect">true</prop>
                      </props>
                  </property>
                  <property name="mappingDirectoryLocations">       
                      <list>      
                         <value>classpath:com/apache/model</value>      
                      </list>
                  </property>   

              </bean>
          4。消除ProxyFactoryBean的繁重配置
          a.通過(guò)繼承于parent ProxyFactoryBean
          b.使用aop自動(dòng)代理的方式
          在Spring中進(jìn)行事務(wù)的管理均是基于aop的方式,為每個(gè)需要事務(wù)管理的bean均設(shè)定相應(yīng)的ProxyFactoryBean又是一件非常繁重的工作。使用自動(dòng)代理可以消除這樣的重復(fù)的工作。方法如下,聲明DefaultAdvisorAutoProxyCreator為所有的advisor作為代理,在context上下文中查找所有的advisor,然后自動(dòng)代理那些被在pointcut加入了切面的bean。針對(duì)事務(wù)使用spring中的事務(wù)的advisor,TransactionAttributeSourceAdvisor。
          該advisor有兩種方式進(jìn)行注入,一種是setter方式,如下:
              <!-- 配置自動(dòng)代理事務(wù) -->
              <bean id="transactionAdvisor" class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
                  <property name="transactionInterceptor" ref="transactionInterceptor"/>
              </bean>
          另一種是constructor方式,如下:
              <!-- 配置自動(dòng)代理事務(wù) -->
              <bean id="transactionAdvisor" class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
               <constructor-arg>
                  <ref bean="transactionInterceptor"/>
               </constructor-arg>        
              </bean>
          建議以constructor方式進(jìn)行注入。

          posted on 2008-07-28 23:04 周大俠 閱讀(216) 評(píng)論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 来安县| 屯昌县| 博野县| 甘洛县| 嵊州市| 巍山| 罗田县| 郁南县| 南京市| 龙游县| 阳信县| 贵州省| 奇台县| 洛南县| 安康市| 澎湖县| 申扎县| 新津县| 金寨县| 邢台市| 石棉县| 永新县| 札达县| 临邑县| 南投县| 红安县| 宁夏| 广宁县| 淮安市| 琼海市| 曲周县| 洪湖市| 桓仁| 昔阳县| 鸡西市| 荔浦县| 醴陵市| 宝兴县| 丹寨县| 田林县| 合水县|