方案参考《Spring in action》(第三版中文版),结合网上其他博主的方案分享整理出。
- 基于xml配置优化
XML是通用的Spring配置方式。但如果定义了大量bean,基于XML的配置就会变得冗长而不实用。Spring提供了丰富的配置选项,恰当地利用其中的选项可以使XML配置更清晰,但是,有些选项(如autowiring)往往会降低配置文件的可读性和可维护性。
1.1避免使用自动绑定(autowiring)功能
Spring可以通过bean类的自身自动绑定依赖性,所以不必显示指明bean的属性和构造函数。Bean属性可以通过属性名称或类型匹配来实现自动绑定。构造函数通过类型匹配来实现自动绑定。甚至可以指定自动检测autowiring模式,它可以引导Spring选择一种适当的运行机制。
示例:
<bean id=”orderService” class=”com.gta.service.OrderService” autowire=”byName”/>
OrderService类的属性名在容器中用于匹配bean实例。自动绑定可能会节省一些键入工作量并减少混乱。但是在现实项目中不应该使用这种方式,因为它牺牲了配置的可读性和可维护性。
1.2使用命名约定
该原则对于Java编码也一样适用。在项目中使用清晰的、描述性的、一致的命名约定将非常有利于开发人员理解XML配置。例如,对于bean ID,可以按照Java类字段名约定来命名它。OrderServiceDAO实例的bean ID应该命名为orderServiceDAO。对于大型项目,可以在bean ID前面加上包名作为前缀。
1.3使用简洁形式
简洁形式避免了冗长,因为它将属性值和引用从子元素中移入属性中。
示例:
<bean id=”orderService” class=”com.gta.service.OrderService”>
<property name=”companyName”>
<value>gta</value>
</property>
<constructor-arg>
<ref bean=”orderDao”>
</constructor-arg>
</bean>
可以用简洁形式将上述代码重写为:
<bean id=”orderService” class=”com.gta.service.OrderService”>
<property name=”companyName” value=”gta”/>
<constructor-arg ref =”orderDao”/>
</bean>
注意,对于<ref local=”…”>,没有简洁形式。