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">
新闻热点
疑难解答