Spring中XML配置文件的十二個最佳方法(下)
7. 使用id作為bean標(biāo)識符
可以指定一個id或名稱來作為bean標(biāo)識符。雖然使用id不能提高可讀性,但是它可以利用XML分析程序來對bean引用進(jìn)行驗(yàn)證。如果由于XML IDREF的約束而不能使用某個id,那么可以使用名稱來作為bean的標(biāo)識符。XML IDREF的約束是:id必須以字母(或者XML規(guī)范中定義的標(biāo)點(diǎn)符號)開頭,后面是字母、數(shù)字、連字符、下劃線、冒號或句點(diǎn)。實(shí)際上,很少會遇到XML IDREF約束問題。
8. 在開發(fā)階段使用依賴性檢查(dependency-check)
可以在bean定義中為dependency-check屬性設(shè)置一個非默認(rèn)值,比如simple、objects或all,以便容器進(jìn)行依賴性檢查。當(dāng)需要顯式或通過自動綁定設(shè)置bean的全部屬性(或某類屬性)時,依賴性檢查便顯得很有用。
- <bean id="orderService"
- class="com.lizjason.spring.OrderService"
- dependency-check="objects">
- <property name="companyName"
- value="lizjason"/>
- <constructor-arg ref="orderDAO"/>
- </bean>
在這個例子中,容器確保為orderService bean設(shè)置的屬性不是primitives或collections。也可以為所有的bean設(shè)置默認(rèn)依賴性檢查,但是我們很少這樣做,因?yàn)橛行゜ean屬性根本就不必設(shè)置。
9. 為每個配置文件添加首部注釋
***使用描述性的id和名稱來取代XML配置文件中的內(nèi)置注釋。此外,添加一個配置文件首部也很有用,它可以概述文件中所定義的bean??梢赃x擇將描述添加到description標(biāo)簽中。例如:
- <beans>
- <description>
- This file defines billing service
- related beans and it depends on
- baseServices.xml,which provides
- service bean templates...
- </description>
- ...
- </beans>
使用description標(biāo)簽的一個好處是可以輕松地利用工具從標(biāo)簽中選獲取描述內(nèi)容。
10. 對于更改,團(tuán)隊(duì)成員要積極交流
在重構(gòu)Java代碼時,需要隨時更新配置文件并通知團(tuán)隊(duì)成員。XML配置文件也是代碼,它們是應(yīng)用程序的至關(guān)重要的部分,但是它們難于閱讀和維護(hù)。大部分情況下,需要同時閱讀XML配置文件和運(yùn)行中的Java代碼。
11. Setter注入優(yōu)于構(gòu)造函數(shù)注入
Spring提供了3種類型的依賴注入:構(gòu)造函數(shù)注入(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類使用的是構(gòu)造函數(shù)注入,而BillingService類使用的是setter注入。構(gòu)造函數(shù)注入可以確保 bean不會在一個非法狀態(tài)下被創(chuàng)建,但是setter注入更加靈活且更易于管理,尤其是在類包含許多屬性并且其中一些可選的情況下。
12. 不要濫用依賴注入
***一點(diǎn),Spring ApplicationContext可以為您創(chuàng)建Java對象,但并不是所有的Java對象都應(yīng)通過依賴注入來創(chuàng)建。例如,全局對象不應(yīng)該通過 ApplicationContext來創(chuàng)建。Spring是一個很棒的框架,但是,就可讀性和易管理性而言,如果定義了大量bean,基于XML的配置就可能成為問題。過度使用依賴注入會使XML配置變得復(fù)雜且臃腫。要知道,借助于功能強(qiáng)大的IDE(如Eclipse和IntelliJ),Java代碼比XML文件更加易讀、易維護(hù)、易管理。
結(jié)束語
XML是通用的Spring配置方式。但如果定義了大量bean,基于XML的配置就會變得冗長而不實(shí)用。Spring提供了豐富的配置選項(xiàng),恰當(dāng)?shù)乩闷渲械倪x項(xiàng)可以使XML配置更清晰,但是,有些選項(xiàng)(如autowiring)往往會降低配置文件的可讀性和可維護(hù)性。遵循本文中所描述的***實(shí)踐,將有助于您創(chuàng)建出清晰易讀的XML配置文件。
【編輯推薦】