尽量使用ApplicationContext装配bean而不是用import
像Ant脚本中imports一样Spring的import 元素对于模块化bean的装配非常有用例如
class=
com
lizjason
spring
OrderService
/>
然而比起在XML中用imports预装配这些bean利用ApplicationContext来配置它们将更加灵活也可以使XML配置更加的易于管理你可以像下面这样传递一个bean定义数组到ApplicationContext的构造函数中
String[] serviceResources ={
orderServices
xml
billingServices
xml
shippingServices
xml
};ApplicationContext orderServiceContext = newClassPathXmlApplicationContext(serviceResources);
用id来标识bean你可以用id或名字作为bean的标识
用id可读性较差但是它可以影响XML分析器使bean的reference有效如果id由于XML IDREF约束而无法使用你可以用name作为bean的标识XML IDREF约束是指id必须以字母开始(或者是在XML声名了的一个标点符号)后面可以是字母数字连字符下划线冒号或full stops(不知道怎么翻译好)在实际应用中很少会遇到XML IDREF约束问题
在开发阶段使用依赖检查
你可以为bean的dependencycheck属性设置一个值来取代默认的none比如说simpleobjects或者all这样的话容器将替你做依赖有效性的检查当一个bean的所有属性(或者某些属性目录)都被明确设置或利用自动装配时将会非常有用class=comlizjasonspringOrderServicedependencycheck=objects>value=lizjason/> 在这个例子中容器将确保这些属性不是privitives或者保证collections是为orderService bean设置的为所有的bean设置默认的依赖检查是可能的但这个特性由于有些bean的属性不需要设置而很少使用
为每个配置文件加一个描述注释
在XML配置文件中最好使用有描述性的id和name而不是成堆的注释另外加一个文件描述头将会非常有用这个描述可以概括文件中定义的bean另一个选择你可以在description元素中加入描述信息例如
This file defines billing servicerelated beans and it depends onbaseServices
xml
which providesservice bean templates
用description元素的一个好处就是工具可以很容易的把描述信息从这个元素中提取出来
和team members沟通变更
当你修改java源码后要确保更改了配置文件中的相应部分并把这个情况告知你的team membersXML配置文件也是代码它们是程序的重要组成部分但它们很难阅读和维护大多数时间里你需要同时看XML配置文件和java代码才能知道是怎么回事
setter注入和构造函数注入优先使用前者
Spring提供了三种注入方式构造函数注入setter注入和方法注入一般我们使用前两种
class=
com
lizjason
spring
OrderService
>class=
com
lizjason
spring
BillingService
>ref=
billingDAO
>
在这个例子中orderService bean用了构造函数注入而BillingService bean用了setter注入构造函数注入可以确保bean正确地构建但是setter注入更加的灵活和易于控制特别是当class有多个属性并且它们中的一些是可选的情况是更是如此
不要滥用注入
就像前面提到的Spring的ApplicationContext可以替你创建java对象但不是所有的java对象都应该通过注入创建例如域对象就不应该通过ApplicationContext创建Spring是一个优秀的框架但是考虑到可读性和可操控性基于XML配置的配置会在定义很多bean的时候出现麻烦过渡使用依赖注入将会使XML配置更加的复杂和冗长切记当使用高效的IDE时例如Eclipse and IntelliJjava代码更加的易于阅读维护和管理比使XML文件结论XML是Spring流行的配置格式存在大量bean定义时基于XML的配置会变得冗长而不易使用Spring提供了丰富的配置选项适当地使用这些选项可以使XML配置更加的清晰但其它的一些选项例如自动装配可能会降低可读性和可维护性参考本文中提到的这些技巧可能会帮助你创建干净而易读的XML配置文件
[] []