[沒有簡潔形式。]
簡潔形式不但可以節約你的打字,而且可以使XML配置文件清楚。它最引人注目的是當在一個配置文件中有大量定義的類時可以提高易讀性。
4. 對于構造器參數匹配,類型名比序號好。
當一個構造器含有一個以上的同種類型的參數,或者屬性值的標簽已經被占用時,Spring答應你使用從0計數的序號來解決這些會帶來混淆的問題。例如:
class="com.lizjason.spring.BillingService">
像下面這樣,利用類型屬性來編寫會更好一些:
class="com.lizjason.spring.BillingService">
value="lizjason"/>
使用索引可以稍稍減少一些冗長,但是和使用類型屬性相比,它還是有輕易發生錯誤的傾向和難于閱讀的缺點。你應該只在構造器參數不明確的時候,才使用索引這一方法。
5. 盡可能重用已定義過的bean
Spring提供一種類似繼續一樣的機制來減少配置信息的復制并簡化XML配置。定義一個子類可以從它父類那里繼續配置信息,而父類實質上作為子類的一個模板。這就是大工程中所謂的重用。你所需要做的就是在父類bean中設置abstract=true,然后在子bean注明它自己的父類bean。例如:
class="com.lizjason.spring.AbstractService">
value="lizjason"/>
ippingService
parent="abstractService"
class="com.lizjason.spring.ShippingService">
ShippingService類從abstractService類那里繼續companyName屬性的值――lizjason。假如你沒有為一個bean指明類或factory方法,那么這個bean便是抽象的。
6. 盡量使用applicationContext來裝配定義的bean
像在Ant腳本中的引用一樣,Spring的引用對于裝配模塊化的bean來說是很有用的。例如:
class="com.lizjason.spring.OrderService"/>
相對于使用import在XML配置中來預裝配,通過ApplicationContext來配置這些beans,顯得更加靈活。利用ApplicationContext也使得XML配置易于治理。你可以像下面的例子那樣在ApplictionContext構造器里布置bean:
String[] serviceResources =
{"orderServices.xml",
"billingServices.xml",
"shippingServices.xml"};
ApplicationContext orderServiceContext = new
ClassPathXmlApplicationContext(serviceResources);
7. 利用id作為bean的標識符
你可以指定一個id或名稱來作為bean的標識符。雖然使用id不會提高易讀性,但是它可以讓XML parser對bean的引用有效方面進行更好的驗證。假如由于XML IDREF的限制而不能使用某個id,你可以利用names來作為bean的標識符。XML IDREF的限制是id必須以字母開頭(或者在XML規范中定義的標點符號),后面接著字母,數字,連字號,下劃線,冒號等。實際上,碰到XML IDREF限制的問題是很少見的。
8. 在開發階段使用依靠檢驗
你可以在bean中給依靠檢驗的屬性設置值,而不采用原先默認的空值,屬性設置例如simple,object或all,以便容器進行依靠檢驗。當bean的全部的屬性(或某類屬性)需要被明確設置或自動綁定時,依靠檢驗便顯得很有用。
class="com.lizjason.spring.OrderService"
dependency-check="objects">
value="lizjason"/>
在這個例子里,容器確保為orderService bean設置的屬性不是primitives 或者 collections。為所有的bean設置默認依靠檢測也是可以的,但是我們很少這樣做,是因為有些bean的屬性根本就不必設置。
9. 為每個配置文件加上一個header comment
最好使用descriptive id和名稱來代替在XML配置文件中的注釋。此外,加上一個配置文件header也很有用處,它可以概述文件中所定義的bean。你可以選擇將描述內容加入description標簽中。例如:
This file defines billing service
related beans and it depends on
baseServices.xml,which provides
service bean templates...
...
使用description標簽的一個好處是可以輕易地利用工具從標簽中選取出description(的內容)。
10. 對于任何變化,要與隊友積極交流
當你重構Java代碼時,你需要隨時更新配置文件并且通知隊友。XML配置文件也是代碼,它們是應用程序的至關重要的部分,但是它們難于閱讀和維護。大部分時間你既要閱讀XML配置文件又要閱讀運行中的Java代碼。
11. Setter injection優于constructor injection
Spring提供3種類型的依靠注入: constructor injection,setter injection, 和method injection。我們一般只用前兩種類型。
class="com.lizjason.spring.OrderService">
class="com.lizjason.spring.BillingService">
ref="billingDAO">