Spring中XML設定檔的十二個最佳方法(下)

來源:互聯網
上載者:User

引用:http://developer.51cto.com/art/200906/129820.htm

 

本文介紹Spring中XML設定檔的十二個最佳方法中的後六個,包括為每個設定檔添加首部注釋,Setter注入優於建構函式注入等。

7. 使用id作為bean標識符

可以指定一個id或名稱來作為bean標識符。雖然使用id不能提高可讀性,但是它可以利用XML剖析器來對bean引用進行驗證。如果由於XML IDREF的約束而不能使用某個id,那麼可以使用名稱來作為bean的標識符。XML IDREF的約束是:id必須以字母(或者XML規範中定義的標點符號)開頭,後面是字母、數字、連字號、底線、冒號或句點。實際上,很少會遇到XML IDREF約束問題。

 

8. 在開發階段用法相依性檢查(dependency-check)

可以在bean定義中為dependency-check屬性設定一個非預設值,比如simple、objects或all,以便容器進行依賴性檢查。當需要顯式或通過自動綁定設定bean的全部屬性(或某類屬性)時,依賴性檢查便顯得很有用。

 

<bean id="orderService" 

        class="com.lizjason.spring.OrderService" 

        dependency-check="objects"> 

        <property name="companyName" 

            value="lizjason"/> 

        <constructor-arg ref="orderDAO"/> 

    </bean>  

在這個例子中,容器確保為orderService bean設定的屬性不是primitives或collections。也可以為所有的bean設定預設依賴性檢查,但是我們很少這樣做,因為有些bean屬性根本就不必設定。

 

9. 為每個設定檔添加首部注釋

最好使用描述性的id和名稱來取代XML設定檔中的內建注釋。此外,添加一個設定檔首部也很有用,它可以概述檔案中所定義的bean。可以選擇將描述添加到description標籤中。例如:

 

<beans> 

        <description> 

            This file defines billing service  

            related beans and it depends on  

            baseServices.xml,which provides  

            service bean templates...  

        </description> 

        ...  

    </beans> 

使用description標籤的一個好處是可以輕鬆地利用工具從標籤中選擷取描述內容。

 

10. 對於更改,團隊成員要積極交流

在重構Java代碼時,需要隨時更新設定檔並通知團隊成員。XML設定檔也是代碼,它們是應用程式的至關重要的部分,但是它們難於閱讀和維護。大部分情況下,需要同時閱讀XML設定檔和運行中的Java代碼。

 

11. Setter注入優於建構函式注入

Spring提供了3種類型的依賴注入:建構函式注入(constructor injection)、setter注入(setter injection)和方法注入(method injection)。我們一般只用前兩種。

 

<bean id="orderService" 

        class="com.lizjason.spring.OrderService"> 

        <constructor-arg ref="orderDAO"/> 

    </bean> 

    <bean id="billingService" 

        class="com.lizjason.spring.BillingService"> 

        <property name="billingDAO" 

            ref="billingDAO"> 

    </bean>  

在這個例子中,orderService類使用的是建構函式注入,而BillingService類使用的是setter注入。建構函式注入可以確保 bean不會在一個非法狀態下被建立,但是setter注入更加靈活且更易於管理,尤其是在類包含許多屬性並且其中一些可選的情況下。

 

12. 不要濫用依賴注入

最 後一點,Spring ApplicationContext可以為您建立Java對象,但並不是所有的Java對象都應通過依賴注入來建立。例如,全域對象不應該通過 ApplicationContext來建立。Spring是一個很棒的架構,但是,就可讀性和易管理性而言,如果定義了大量bean,基於XML的配置就可能成為問題。過度使用依賴注入會使XML配置變得複雜且臃腫。要知道,藉助於功能強大的IDE(如Eclipse和IntelliJ),Java代碼比XML檔案更加易讀、易維護、易管理。

 

結束語

XML是通用的Spring配置方式。但如果定義了大量bean,基於XML的配置就會變得冗長而不實用。Spring提供了豐富的配置選項,恰當地利用其中的選項可以使XML配置更清晰,但是,有些選項(如autowiring)往往會降低設定檔的可讀性和可維護性。遵循本文中所描述的最佳實務,將有助於您建立出清晰易讀的XML設定檔。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.