动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.一个简单的JDBC包装器(2).
.Castor JDO: 一个欺诈的广告.
.揭开WebLogic Web服务安全性.
.《实时UML与Rational Rose RealT.
.java中文乱码的解决.
.JBuilder集成开发环境介绍.
.实现Java平台的三种方式v.
.2005 Java中国开发者大会现场报道.
.网上选课系统.java.
.设计模式之Command.
.用EJB 3.0简化企业Java开发(下).
.从 .NET 应用程序访问 Microsoft.
.百分之百纯 Java(TM) java名词 解.
.Robocode的线程与执行次序.
.Java的垃圾回收(Garbage Collec.
.使用Hibernate进行对象的关系映射.
.EJB设计模式5.
.用Java Servlet实现文件上载.
.Java 理论与实践: 用动态代理进行.
.Java语言基础二.

SpringXML配置十二个最佳实践

发表日期:2008-1-5 |



  在这篇文章里,对于Spring XML的配置,我将向你展示12种比较好的实践。其中的一些实践不仅是好的实践,更是必要的实践。除此以外,还有其他因素,例如领域模型的设计,都能影响XML的配置,但是这篇文章重点研究XML配置的易读性和易治理性。

  1。不要使用autowiring

  Spring可以通过类的自省来自动绑定其依靠部分,使得你不必明确指明bean的属性和构造器。Bean的属性可以通过属性名称或类型匹配来实现自动绑定。构造器通过类型匹配来实现自动绑定。你甚至可以指定自动检测自动绑定模式,它可以引导Spring选择一种适当的运行机制。先来看看下面的一个例子:
            class="com.lizjason.spring.OrderService"
        autowire="byName"/>
  OrderService类的属性名在容器中用于匹配bean实例。自动绑定可以潜在地节省一些打字和减少一些混乱。但是在现实世界的工程里你不应该使用这种方式,这是因为它牺牲了配置的清楚性和可维护性。许多指南和介绍中大量吹捧自动绑定是Spring的一种极好的特征而没有提到这一特性所带来的牺牲。依我的观点,这就像Spring中的object-pooling,它更像是一种为了占据更多市场的商业特征。它对于XML配置文件的小巧化是一个好办法,但实际上也增加了复杂程度,尤其当你运行有大量类声明的工程时。虽然Spring答应你混合自动绑定和手动绑定,但是这个矛盾会使XML配置更加晦涩难懂。

  2.使用通俗的命名

  这个方式对于Java编码也一样适用。在工程中使用清楚的、描述性的、协调的通俗名称对于开发者理解XML配置是十分有益的。例如对于bean ID,你可以根据通俗的Java类名来命名它。对于例子中OrderServiceDAO的bean ID命名为orderServiceDAO。对于大的工程,你可以在bean ID前面加上包名作为前缀。

  3. 使用简洁的形式

  简洁形式避免了冗长,是因为它从子元素中将属性值和参考写到属性中。例如下面的例子:
            class="com.lizjason.spring.OrderService">
        
            lizjason
        

        
            
        

    


  可以使用简洁形式将上述代码重写为:
            class="com.lizjason.spring.OrderService">
                    value="lizjason"/>
        
    

  简洁形式功能在1.2版本中可以使用。对于没有简洁形式。
简洁形式不但可以节约你的打字,而且可以使XML配置文件清楚。它最引人注目的是当在一个配置文件中有大量定义的类时可以提高易读性。

  4. 对于构造器参数匹配,类型名比序号好。

  当一个构造器含有一个以上的同种类型的参数,或者属性值的标签已经被占用时,Spring答应你使用从0计数的序号来解决这些会带来混淆的问题。例如:
            class="com.lizjason.spring.BillingService">
        
        
    


  像下面这样,利用类型属性来编写会更好一些:
            class="com.lizjason.spring.BillingService">
                    value="lizjason"/>
        
    

  使用索引可以稍稍减少一些冗长,但是和使用类型属性相比,它还是有轻易发生错误的倾向和难于阅读的缺点。你应该只在构造器参数不明确的时候,才使用索引这一方法。

  5. 尽可能重用已定义过的bean

  Spring提供一种类似继续一样的机制来减少配置信息的复制并简化XML配置。定义一个子类可以从它父类那里继续配置信息,而父类实质上作为子类的一个模板。这就是大工程中所谓的重用。你所需要做的就是在父类bean中设置abstract=true,然后在子bean注明它自己的父类bean。例如:
            class="com.lizjason.spring.AbstractService">
                    value="lizjason"/>
    


            parent="abstractService"
        class="com.lizjason.spring.ShippingService">
        
    

  ShippingService类从abstractService类那里继续companyName属性的值――lizjason。假如你没有为一个bean指明类或factory方法,那么这个bean便是抽象的。

  6. 尽量使用ApplicationContext来装配定义的bean

  像在Ant脚本中的引用一样,Spring的引用对于装配模块化的bean来说是很有用的。例如:
    
        
        
                    class="com.lizjason.spring.OrderService"/>
    
  相对于使用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的全部的属性(或某类属性)需要被明确设置或自动绑定时,依靠检验便显得很有用。
            class="com.lizjason.spring.OrderService"
        dependency-check="objects">
                    value="lizjason"/>
        
    
  在这个例子里,容器确保为orderService bean设置的属性不是primitives 或者 collections。为所有的bean设置默认依靠检测也是可以的,但是我们很少这样做,是因为有些bean的属性根本就不必设置。

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

  最好使用descriptive id和名称来代替在XML配置文件中的注释。此外,加上一个配置文件header也很有用处,它可以概述文件中所定义的bean。你可以选择将描述内容加入description标签中。例如:
    
        
            This file defines billing service
            related beans and it depends on
            baseServices.xml,which provides
            service bean templates...
        

        ...
    

  使用description标签的一个好处是可以轻易地利用工具从标签中选取出description(的内容)。

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

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

  11. Setter injection优于constructor injection

  Spring提供3种类型的依靠注入: constructor injection,setter injection, 和method injection。我们一般只用前两种类型。
            class="com.lizjason.spring.OrderService">
        
    


            class="com.lizjason.spring.BillingService">
                    ref="billingDAO">
    


上一篇:直接召唤系与IoCfashion使用Spring 人气:439
下一篇:SpringFramework中面向方面编程二 人气:392
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-9-6 Movie34电影搜索引擎 v3.0
2008-9-6 wap2.0仿帝国建站喜用 v2.0
2008-9-6 免费人才招聘网 宽屏版 v3.01
2008-9-6 喜喔喔视频采集程序 v1.0 beta
2008-9-6 ASP客户管理系统
2008-9-6 主流驿站中秋祝福程序
2008-9-6 php实现msn协议的类
2008-9-5 Coppermine Photo Gallery v1.4.
2008-9-5 清松网络日记本 v2.4
2008-8-23 Mini WinMount V0.4
2008-8-23 Vista优化大师3.11正式版
2008-8-23 Wine 1.13
2008-8-23 KlipFolio 5.0 Build 5899-80
2008-8-23 Windows Sysinternals Desktops
2008-8-23 OneTap Movies1.2破解版
2008-8-23 AnnotaterPDF阅读1.1.503 破解版
2008-8-23 SoundMeter分贝测量仪 v1.0汉化破
2008-8-23 iDrum音乐节拍1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号