AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > JAVA编程

Spring XML配置十二个最佳实践

51自学网 2015-09-02 http://www.wanshiok.com

 

  相对于使用import在XML配置中来预装配,通过ApplicationContext来配置这些beans,显得更加灵活。利用 ApplicationContext也使得XML配置易于管理。你可以像下面的例子那样在ApplictionContext构造器里布置bean:

  

以下是引用片段:
String[] serviceResources =
  {"orderServices.xml",
  "billingServices.xml",
  "shippingServices.xml"};
  ApplicationContext orderServiceContext = new
  ClassPathXmlApplicationContext(serviceResources);
  7. 利用id作为bean的标识符

  你可以指定一个id或名称来作为bean的标识符。虽然使用id不会提高易读性,但是它可以让XML parser对bean的引用有效方面进行更好的验证。如果由于XML IDREF的限制而不能使用某个id,你可以利用names来作为bean的标识符。XML IDREF的限制是id必须以字母开头(或者在XML规范中定义的标点符号),后面接着字母,数字,连字号,下划线,冒号等。实际上,遇到XML IDREF限制的问题是很少见的。

  8. 在开发阶段使用依赖检验

  你可以在bean中给依赖检验的属性设置值,而不采用原先默认的空值,属性设置例如simple,object或all,以便容器进行依赖检验。当bean的全部的属性(或某类属性)需要被明确设置或自动绑定时,依赖检验便显得很有用。

  

以下是引用片段:
< bean id="orderService"
  class="com.lizjason.spring.OrderService"
  dependency-check="objects">
  < property name="companyName"
  value="lizjason"/>
  < constructor-arg ref="orderDAO"/>
  < /bean>
  在这个例子里,容器确保为orderService bean设置的属性不是primitives 或者 collections。为所有的bean设置默认依赖检测也是可以的,但是我们很少这样做,是因为有些bean的属性根本就不必设置。

  9. 为每个配置文件加上一个header comment

  最好使用descriptive id和名称来代替在XML配置文件中的注释。此外,加上一个配置文件header也很有用处,它可以概述文件中所定义的bean。你可以选择将描述内容加入description标签中。例如:

  

以下是引用片段:
< beans>
  < description>
  This file defines billing service
  related beans and it depends on
  baseServices.xml,which provides
  service bean templates...
  < /description>
  ...
  < /beans>
  使用description标签的一个好处是可以容易地利用工具从标签中选取出description(的内容)。

  10. 对于任何变化,要与队友积极交流

  当你重构Java代码时,你需要随时更新配置文件并且通知队友。XML配置文件也是代码,它们是应用程序的至关重要的部分,但是它们难于阅读和维护。大部分时间你既要阅读XML配置文件又要阅读运行中的Java代码。

  11. Setter injection优于constructor injection

  Spring提供3种类型的依赖注入: constructor injection,setter injection, 和method injection。我们一般只用前两种类型。

  

以下是引用片段:
< bean id="orderService"
  class="com.lizjason.spring.OrderService">
  < constructor-arg ref="orderDAO"/>
  < /bean>
  < bean id="billingService"
  class="com.lizjason.spring.BillingService">
  < property name="billingDAO"
  ref="billingDAO">
  < /bean>
  这个例子中,orderService类使用的是constructor injection,而BillingService类使用的是setter injection。constructor injection可以确保bean不会在一个非法状态下被创建,但是setter injection更加灵活并且更易管理,尤其当类存在很多属性并且其中一些是可选的情况下。

  12. 不要滥用依赖注入

  作为最后一点,Spring ApplicationContext可以替你创建Java对象,但是并不是所有的Java对象都通过依赖注入来创建的。例如,全局的对象不应该通过 ApplicationContext来创建。Spring是一个很棒的框架,但是,就易读性和易管理性而言,当定义大量bean的时候,基于XML的配置问题就会突出。过度的依赖注入会使XML配置变得复杂而且臃肿。记住!使用强大的IDE时,例如Eclipse和IntelliJ,与XML文件相比, Java代码更加易读,易维护,易管理。

  总结

  对于Spring的配置,XML是很优秀的方式。但当定义大量 bean时,基于XML配置会变得冗长,笨拙。Spring提供了丰富的配置选项。适当地利用其中的选项可以使XML配置清晰,但是,有些选项,例如 autowiring(自动绑定),往往会降低易读性和易维护性。文章中所列举的实例,可以帮助你创建出清晰易读的XML配置文件。

 
 
说明
:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
 

上一篇:J2ME游戏开发的高级优化技巧  下一篇:在Java程序中处理数据库超时与死锁