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
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    WPF之感触
    C# WinForm 给DataTable中指定位置添加列
    MyEclipse 8.6 download 官方下载地址
    将博客搬至CSDN
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2748806.html
Copyright © 2011-2022 走看看