OrderService類的屬性名在容器中用于匹配bean實例。自動綁定可以潛在地節省一些打字和減少一些混亂。但是在現實世界的工程里你不應該使用這種方式,這是因為它犧牲了配置的清楚性和可維護性。許多指南和介紹中大量吹捧自動綁定是Spring的一種極好的特征而沒有提到這一特性所帶來的犧牲。依我的觀點,這就像Spring中的object-pooling,它更像是一種為了占據更多市場的商業特征。它對于XML配置文件的小巧化是一個好辦法,但實際上也增加了復雜程度,尤其當你運行有大量類聲明的工程時。雖然Spring答應你混合自動綁定和手動綁定,但是這個矛盾會使XML配置更加晦澀難懂。class="com.lizjason.spring.OrderService"
autowire="byName"/>
class="com.lizjason.spring.OrderService">
lizjason
class="com.lizjason.spring.OrderService">
value="lizjason"/>
class="com.lizjason.spring.BillingService">
class="com.lizjason.spring.BillingService">
value="lizjason"/>
class="com.lizjason.spring.AbstractService">
value="lizjason"/>
ippingService
parent="abstractService"
class="com.lizjason.spring.ShippingService">
相對于使用import在XML配置中來預裝配,通過ApplicationContext來配置這些beans,顯得更加靈活。利用ApplicationContext也使得XML配置易于治理。你可以像下面的例子那樣在ApplictionContext構造器里布置bean:
class="com.lizjason.spring.OrderService"/>
String[] serviceResources =7. 利用id作為bean的標識符
{"orderServices.xml",
"billingServices.xml",
"shippingServices.xml"};
ApplicationContext orderServiceContext = new
ClassPathXmlApplicationContext(serviceResources);
在這個例子里,容器確保為orderService bean設置的屬性不是primitives 或者 collections。為所有的bean設置默認依靠檢測也是可以的,但是我們很少這樣做,是因為有些bean的屬性根本就不必設置。class="com.lizjason.spring.OrderService"
dependency-check="objects">
value="lizjason"/>
This file defines billing service
related beans and it depends on
baseServices.xml,which provides
service bean templates...
...
class="com.lizjason.spring.OrderService">
class="com.lizjason.spring.BillingService">
ref="billingDAO">
新聞熱點
疑難解答