Spring中XML配置文件的十二个最佳方法(上)
2011-04-15 14:41
615 查看
引用:http://developer.51cto.com/art/200906/129816.htm
本文介绍Spring中XML配置文件的十二个最佳方法中的前六个,包括使用简洁形式,使用命名约定等。
<bean id="orderService"
class="com.lizjason.spring.OrderService"
autowire="byName"/>
<bean id="orderService"
class="com.lizjason.spring.OrderService">
<property name="companyName">
<value>lizjasonvalue>
property>
<constructor-arg>
<ref bean="orderDAO">
constructor-arg>
bean>
<bean id="orderService"
class="com.lizjason.spring.OrderService">
<property name="companyName"
value="lizjason"/>
<constructor-arg ref="orderDAO"/>
bean>
<bean id="abstractService" abstract="true"
class="com.lizjason.spring.AbstractService">
<property name="companyName"
value="lizjason"/>
bean>
<bean id="shippingService"
parent="abstractService"
class="com.lizjason.spring.ShippingService">
<property name="shippedBy" value="lizjason"/>
bean>
<beans>
<import resource="billingServices.xml"/>
<import resource="shippingServices.xml"/>
<bean id="orderService"
class="com.lizjason.spring.OrderService"/>
<beans>
String[] serviceResources =
{"orderServices.xml",
"billingServices.xml",
"shippingServices.xml"};
ApplicationContext orderServiceContext = new
ClassPathXmlApplicationContext(serviceResources);
1。避免使用自动绑定(autowiring)功能
Spring 可以通过bean类的自省自动绑定依赖性,所以不必显式指明bean的属性和构造函数。Bean属性可以通过属性名称或类型匹配来实现自动绑定。构造函数通过类型匹配来实现自动绑定。甚至可以指定自动检测autowiring模式,它可以引导Spring选择一种适当的运行机制。先来看看下面的一个例子:
OrderService 类的属性名在容器中用于匹配bean实例。自动绑定可能会节省一些键入工作量并减少混乱。但是在现实项目中不应该使用这种方式,因为它牺牲了配置的可读性和可维护性。许多指南和介绍中大肆吹捧自动绑定是Spring的一项极好的特性,而没有提到这一特性所带来的牺牲。依我来看,这就像Spring中的对象池(object-pooling),更大程度上只是宣传的噱头。对于精简XML配置文件来说,它是一个好办法,但它实际上增加了复杂性,尤其是在运行包含大量类声明的项目时。虽然Spring允许混合使用自动绑定和显式绑定,但这会使XML配置更加晦涩难懂。
2.使用命名约定
该原则对于Java编码也一样适用。在项目中使用清晰的、描述性的、一致的命名约定将非常有利于开发人员理解XML配置。例如,对于bean ID,可以按照Java类字段名约定来命名它。OrderServiceDAO实例的bean ID应该命名为orderServiceDAO。对于大型项目,可以在bean ID前面加上包名作为前缀。
3. 使用简洁形式
简洁形式避免了冗长,因为它将属性值和引用从子元素中移入属性中。例如下面的例子:
可以使用简洁形式将上述代码重写为:
简洁形式自1.2版本起就可以使用。注意,对于,没有简洁形式。
简洁形式不但可以节约键入工作量,而且可以使XML配置文件更清晰。当一个配置文件中定义了大量的类时,它可以显著提高可读性。
4. 对于构造函数参数匹配,类型比下标好
当构造函数含有一个以上同种类型的参数,或者属性值的标签已经被占用时,Spring允许使用从0开始的下标来避免混淆。例如:
利用type属性来编写会更好一些,如下:
使用index可以减少一些代码,但是与type属性相比,它更易于出错且难于阅读。只有在构造函数参数不明确的时候,才应该使用index。
5. 尽可能重用已定义的bean
Spring 提供了一种类似于继承的机制来减少配置信息的复制并简化XML配置。定义一个子类,它就可以从父类那里继承配置信息,而父类实际上成为子类的一个模板。这就是大型项目中所谓的重用。只需在父类bean中设置abstract=true,然后在子bean中指定parent引用。例如:
ShippingService类从abstractService类继承companyName属性的值——lizjason。如果一个bean没有指定类或工厂方法,那么这个bean便是抽象的。
6. 在导入时,首选通过ApplicationContext来汇编bean定义
像Ant脚本中的导入一样,Spring的import元素对于汇编模块化的bean定义来说是很有用的。例如:
然而,相对于使用import在XML配置中进行预汇编,通过ApplicationContext来配置这些bean则显得更加灵活。使用 ApplicationContext的话,XML配置也更易于管理。可以向ApplictionContext构造函数传递一组bean定义,如下:
本文介绍Spring中XML配置文件的十二个最佳方法中的前六个,包括使用简洁形式,使用命名约定等。
<bean id="orderService"
class="com.lizjason.spring.OrderService"
autowire="byName"/>
<bean id="orderService"
class="com.lizjason.spring.OrderService">
<property name="companyName">
<value>lizjasonvalue>
property>
<constructor-arg>
<ref bean="orderDAO">
constructor-arg>
bean>
<bean id="orderService"
class="com.lizjason.spring.OrderService">
<property name="companyName"
value="lizjason"/>
<constructor-arg ref="orderDAO"/>
bean>
<bean id="abstractService" abstract="true"
class="com.lizjason.spring.AbstractService">
<property name="companyName"
value="lizjason"/>
bean>
<bean id="shippingService"
parent="abstractService"
class="com.lizjason.spring.ShippingService">
<property name="shippedBy" value="lizjason"/>
bean>
<beans>
<import resource="billingServices.xml"/>
<import resource="shippingServices.xml"/>
<bean id="orderService"
class="com.lizjason.spring.OrderService"/>
<beans>
String[] serviceResources =
{"orderServices.xml",
"billingServices.xml",
"shippingServices.xml"};
ApplicationContext orderServiceContext = new
ClassPathXmlApplicationContext(serviceResources);
1。避免使用自动绑定(autowiring)功能
Spring 可以通过bean类的自省自动绑定依赖性,所以不必显式指明bean的属性和构造函数。Bean属性可以通过属性名称或类型匹配来实现自动绑定。构造函数通过类型匹配来实现自动绑定。甚至可以指定自动检测autowiring模式,它可以引导Spring选择一种适当的运行机制。先来看看下面的一个例子:
OrderService 类的属性名在容器中用于匹配bean实例。自动绑定可能会节省一些键入工作量并减少混乱。但是在现实项目中不应该使用这种方式,因为它牺牲了配置的可读性和可维护性。许多指南和介绍中大肆吹捧自动绑定是Spring的一项极好的特性,而没有提到这一特性所带来的牺牲。依我来看,这就像Spring中的对象池(object-pooling),更大程度上只是宣传的噱头。对于精简XML配置文件来说,它是一个好办法,但它实际上增加了复杂性,尤其是在运行包含大量类声明的项目时。虽然Spring允许混合使用自动绑定和显式绑定,但这会使XML配置更加晦涩难懂。
2.使用命名约定
该原则对于Java编码也一样适用。在项目中使用清晰的、描述性的、一致的命名约定将非常有利于开发人员理解XML配置。例如,对于bean ID,可以按照Java类字段名约定来命名它。OrderServiceDAO实例的bean ID应该命名为orderServiceDAO。对于大型项目,可以在bean ID前面加上包名作为前缀。
3. 使用简洁形式
简洁形式避免了冗长,因为它将属性值和引用从子元素中移入属性中。例如下面的例子:
可以使用简洁形式将上述代码重写为:
简洁形式自1.2版本起就可以使用。注意,对于,没有简洁形式。
简洁形式不但可以节约键入工作量,而且可以使XML配置文件更清晰。当一个配置文件中定义了大量的类时,它可以显著提高可读性。
4. 对于构造函数参数匹配,类型比下标好
当构造函数含有一个以上同种类型的参数,或者属性值的标签已经被占用时,Spring允许使用从0开始的下标来避免混淆。例如:
<bean id="billingService" class="com.lizjason.spring.BillingService"> <constructor-arg index="0" value="lizjason"/> <constructor-arg index="1" value="100"/> bean>
利用type属性来编写会更好一些,如下:
<bean id="billingService" class="com.lizjason.spring.BillingService"> <constructor-arg type="java.lang.String" value="lizjason"/> <constructor-arg type="int" value="100"/> bean>
使用index可以减少一些代码,但是与type属性相比,它更易于出错且难于阅读。只有在构造函数参数不明确的时候,才应该使用index。
5. 尽可能重用已定义的bean
Spring 提供了一种类似于继承的机制来减少配置信息的复制并简化XML配置。定义一个子类,它就可以从父类那里继承配置信息,而父类实际上成为子类的一个模板。这就是大型项目中所谓的重用。只需在父类bean中设置abstract=true,然后在子bean中指定parent引用。例如:
ShippingService类从abstractService类继承companyName属性的值——lizjason。如果一个bean没有指定类或工厂方法,那么这个bean便是抽象的。
6. 在导入时,首选通过ApplicationContext来汇编bean定义
像Ant脚本中的导入一样,Spring的import元素对于汇编模块化的bean定义来说是很有用的。例如:
然而,相对于使用import在XML配置中进行预汇编,通过ApplicationContext来配置这些bean则显得更加灵活。使用 ApplicationContext的话,XML配置也更易于管理。可以向ApplictionContext构造函数传递一组bean定义,如下:
相关文章推荐
- Spring中XML配置文件的十二个最佳方法(下)
- Spring的XML配置文件的十二个最佳方法实践
- Spring中XML配置文件的十二个最佳方法
- Spring中XML配置文件的十二个最佳方法
- Spring中XML配置文件的十二个最佳方法(上)
- Spring中XML配置文件的十二个最佳方法(下)
- Spring中XML配置文件的十二个最佳方法
- Spring中XML配置文件的十二个最佳方法
- Spring的XML配置文件的十二个最佳方法实践
- 转:Spring XML配置十二个最佳实践
- Spring中c3p0连接池的配置 及JdbcTemplate的使用 通过XML配置文件注入各种需要对象的操作 来完成数据库添加Add()方法
- 第2.1.7章 WEB系统最佳实践Spring文件配置之spring-shiro.xml
- Spring 总结用XML配置的十二个最佳实践
- Spring XML配置十二个最佳实践
- 第2.1.4章 WEB系统最佳实践Spring文件配置之spring-hessian-server.xml
- 读取Spring的配置文件applicationContext.xml几种方法
- 开发框架:Spring XML配置十二个最佳实践
- Spring 总结XML配置的十二个最佳实践-Java基础-Java-编程开发
- spring 实例化定义在xml配置文件中的bean的三种方法?
- 在Maven项目中加载spring中的bean的配置xml文件会提示找不到解决方法