zoukankan      html  css  js  c++  java
  • “零配置”和“有配置”

    本人是做Java开发的,在程序开发中会经常使用到OpenSource开源框架,这些框架大多都灵活、简单、易用、方便。而且开源框架一般会提供一些基本的配置,如我们常用的框架就有Hibernate要配置对象实体到数据库的映射;Spring要配置bean的管理及其对象、属性的注入;Struts要配置Action对象和返回的资源路径;MyBatis要配置CRUD(增删改查)的相关SQL语句。这些配置你不能省略,必须得有,没有程序也不会自动添加。我们也是极可能的简化这些配置,不管怎么样简化但这些配置是不能省略,虽然这些框架给我们开发程序都提供了很大方面上的便利。

    但有时候你是否有纠结这么样的一个问题:到底是用XML配置?还是用Annotation注解配置?或是用XML和Annotation混合配置?

    首先看看两种配置的优缺点比较

    XML它是无可代替的超文本标记语言,可读性、传输性好,它还具有一下优点:
    1、可读性、传输性好:XML可扩展标记语言,最大的优势在于开发者能够为软件量身定制适用的标记,使代码可读性大大提升。
    2、灵活性、易用性、扩展性、移植性好:利用XML配置能使软件更具扩展性。如Spring将class间的依赖配置在XML中,最大限度地提升应用的可扩展性。同样,如果是基于接口注入方式,可以随便切换接口实现类进行注入即可。
    3、验证机制:具有成熟的验证机制确保程序正确性。利用Schema或DTD可以对XML的正确性进行验证,避免了非法的配置导致应用程序出错。
    4、修改配置而无需变动现有程序、无需重新编译。

    虽然XML有如此多的好处,但它也不是万能的,XML也有自身的缺点:
    1、开发友好性支持:需要解析工具或类库的支持。如果你的XML配置需要用到XML的提示或是解析编译,需要用到Schema或DTD进行验证。
    2、性能影响:解析XML势必会影响应用程序性能,占用系统资源。至少你会用到一些解析XML的技术去解析节点元素内容。
    3、维护性高:配置文件过多导致管理变得困难。
    4、编译期无法对其配置项的正确性进行验证,或要查错只能在运行期。如Spring Bean配置了一个错误的类路径class。
    5、IDE 无法验证配置项的正确性无能为力。如Spring注入一个错误的对象或属性。
    6、查错变得困难。往往配置的一个手误导致莫名其妙的错误。
    7、开发人员不得不同时维护代码和配置文件,开发效率变得低下。
    8、配置项与代码间存在潜规则,改变了任何一方都有可能影响另外一方。

    让我们来看看Annotation的优点
    1、保存在class文件中,降低维护成本。
    2、无需工具支持,无需解析。
    3、编译期即可验证正确性,查错变得容易,虽然有部分错误需要在运行期间才能看到。
    4、配置简单、简约,提升开发效率。

    同样Annotation也不是万能的,它也有很多缺点
    1、若要对配置项进行修改,不得不修改Java文件,重新编译打包应用。
    2、配置项编码在Java文件中,可扩展性差、移植性性低。

    那到底用什么样的配置呢,在这里我谈谈我个人的看法:
    1、在开发期间我们用Annotation注解,这样在一定程度上不仅可以省去对XML配置文件的维护,而且大大的提高了开发效率,缩短了开发周期。
    2、开发后期,项目功能完成,我们可以将Annotation配置转换为XML配置,禁用Annotation即可。这样做的理由是如果项目上线,我们需要修改相关代码的配置,直接改XML、properties配置文件即可。这样就不需要开发人员找到相应的代码修改源代码、重新编译打包发布。而xml的配置是可以直接修改的,不需要重新编译,只需重启下你的服务器即可。

    如果这样是不是即利用到框架给我们提供的Annotation注解,也利用到了XML配置。充分的发挥了开源框架给我们提供的技术应用。

    3、混合模式,Annotation和XML相互运用。需要动态配置、后期经常性修改的就用XML配置,如果是不怎么修改的就用Annotation。或许这种混合模式更适合我们,你觉得呢?O(∩_∩)O~

    作者:hoojo 
    出处:

    http://www.cnblogs.com/hoojo/archive/2012/10/31/2747838.html 
    blog:http://blog.csdn.net/IBM_hoojo
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    递归浅析
    python3中zip()的用法
    在早期IBP病人中比较风湿病医生诊断中轴型SpA(aSpA)与非aSpA
    超声检查附着点在早期SpA诊断中的应用
    验证MRI检测AS病人骶髂关节骨侵蚀、扩展侵蚀和回填
    EULAR2008_TNF拮抗剂保护RA骨关节的机制可能不止是抑制滑膜炎
    RA关节功能残疾与软骨破坏的相关性高于骨破坏
    TNFBA治疗强柱达8年的放射学评估
    荟萃分析随机对照临床试验显示抗TNF治疗未增加早期RA病人的严重感染和肿瘤发生风险
    早期IBP病人骶髂关节MRI炎症与1年后MRI结构破坏之间的关系
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2748806.html
Copyright © 2011-2022 走看看