Spring 屬性配置

此文已由做者堯飄海受權網易雲社區發佈。
html

歡迎訪問網易雲社區,瞭解更多網易技術產品運營經驗。web


隨着Spring的不斷髮展與完善,早期它的功能可能只看作是IOC(反轉控制)的容器,或者其最大的亮點爲DI(依賴注入),可是如今隨着Spring 2.5.6 的Release發佈及3.0 版的推出及其餘Spring工程的發佈,如(Spring Batch,web Flow),其功能愈來愈多。正則表達式

經過上下文統一管理各類資源,經過相關設計模式完成屬性的注入或實現方法,其次新的版本經過聲明注入使得配置文件的大大簡化,加上對其餘的功能集成如Aop, Hibernate,Ibatis,JDBC,Toplink, Struts,Webwork,等等,使得和其餘框架整合方便,Spring 裏的設計方法也是之後須要學習的對象,總之經過此框架,使得開發人員把一些系統集成方面的工做簡化了。目前大部分用的仍是手工編寫配置,框架人員能夠經過編寫相關的模板自動實現Spring配置文件的生成。spring

XML文件裏通常配置主要分爲如下幾種:sql

 

1:屬性配置,如:apache

    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
       <property name="locations">
           <list>
              <value>WEB-INF/classes/mail.properties</value>
              <value>WEB-INF/classes/jdbc.properties</value>
           </list>
       </property>
    </bean>

直接指出屬性文件地址,之後面的引用中就能夠直接${key},方便修改。設計模式

 

2:數據源配置,如:安全

  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
       <property name="driverClassName" value="${jdbc.driverClassName}"/>
       <property name="url" value="${jdbc.url}"/>
       <property name="username" value="${jdbc.username}"/>
       <property name="password" value="${jdbc.password}"/>
    </bean>

配置數據的鏈接方式,也可直接配置成JNDI的方式。session

 

3:事務管理,如:app

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
       <property name="dataSource" ref="dataSource"/>
    </bean>

對數據源進行事務管理。

 

4.持久層的配置,輕量級的有hibernate,ibatis等等,hibernate配置以下:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
       <property name="dataSource" ref="dataSource" />
       <property name="mappingResources">
           <list>
              <value>com/netease/demo/bean/Food.hbm.xml</value>
              <value>com/netease/demo/bean/User.hbm.xml</value>
              <value>com/netease/demo/bean/Order.hbm.xml</value>
           </list>
           </property>
       <property name="hibernateProperties">
           <props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
              <prop key="hibernate.hbm2ddl.auto">update</prop>
           </props>
       </property>
       <property name="eventListeners">
           <map>
              <entry key="merge">
<bean class="org.springframework.orm.hibernate3.support.IdTransferringMergeEventListener"/>
              </entry>
           </map>
       </property>
    </bean>

 

 

 5. AOP控制事務配置,即advisor和advice的設置,其中的切入點支持正則表達式的配置,設置以下:

  <aop:config>
              <aop:advisor pointcut="execution(* com.netease.demo..dao.*(..))" advice-ref="txAdvice" order="0" />
           </aop:config>
 
<tx:advice id="txAdvice" transaction-manager="transactionManager">
       <tx:attributes>
           <tx:method name="remove*"/>
           <tx:method name="store*"/>
           <tx:method name="*" read-only="true"/>
       </tx:attributes>
    </tx:advice>

 

    6. 接下來的應該是系統的配置,如DAO,SERVICE等相關的配置,通常能夠單獨文件導入便可,此處只是一個簡單的示例,我把兩者合在一個文件,如:

   <bean id="userService" class="com.netease.demo.service.impl.UserServiceImpl" autowire="byName" />


     經過相關代碼,工程運行和工具對配置文件進行單元測試,如:JUNIT等,在此推薦unitils,只要簡單的在類上面加入聲明便可實現, 如:

        @SpringApplicationContext({"applicationContext.xml", " applicationContext-dao.xml"})

          另外還可直接聲明spring配置的DAO或service,它會直接注入聲明的實現,如:

        @SpringBean("foodDao")

             private FoodDao foodDao;

         經過使用Spring再集成其餘工具如JUNIT,TESTNG等,能夠很是方便,快速的對依賴資源的使用進行測試用例進行開發和運行,明顯的提升測試效率。

  

 

 

參考文獻:

http://www.unitils.org/cookbook.html

http://www.springframework.org

http://www.unitils.org/

標籤:

服務端



免費體驗雲安全(易盾)內容安全、驗證碼等服務


更多網易技術、產品、運營經驗分享請點擊


相關文章:
【推薦】 流式處理框架storm淺析(上篇)

相關文章
相關標籤/搜索