• Spring注解配置和xml配置优缺点比较


    Spring注解配置和xml配置优缺点比较

     

    在昨天发布的文章《spring boot基于注解方式配置datasource》一文中凯哥简单的对xml配置和注解配置进行了比较。然后朋友看到文章后,就问:那你说说这两种区别。

    编辑

    额,说真的,还真把凯哥给问蒙圈了。本文来源:凯哥Java【kaigejava】

    凯哥当时就回答:注解的方便。如果再深入呢?还真说不明白。

    是啊,现在都在说注解好,但是注解和xml比较起来有哪些优点呢?xml又为什么不好呢?有没有深入思考过么?以下内容是凯哥从网上找的并加以理解的。

    想要弄清楚这个,我们先来看看Xml.

    就目前Java web 开发应用中都能见到用xml作为配置的身影。在常用的框架中如:struts、spring mvc、hibernate、mybites等这些框架中(早期版本表现更为突出)都有xml配置。

    我们就来看看XML的优点:

    Xml优点

    1:xml是集中式的元数据,不需要和代码绑定的;

    在我们开发中,xml配置文件和代码类是区分开的。不需要绑定到代码中

    2:使用xml配置可以让软件更具有扩展性;

    比如,我们在spring中,我们不想使用接口而是想用接口的实现类,这个时候只需要修改xml配置中bean的class值就可以了。

    3:对象之间的关系一目了然;

    比如,我们在基于xml配置读取配置信息,如下图:

    编辑

    从xml结构中,我们就可以看出,在popertyPlaceholderConfigure类里面有个locations的属性,而且是list集合。

    再比如,使用xml配置数据源的是:

    编辑

    DataSource对象的属性一目了然。

    4:xml定义:可扩展标记语言,标准通用标记语言的子集,简称XML。从这个定义中我们可以发现,xml最大的优势就在于,开发者(程序员)能够为软件量身定做使用的标记,使得xml更通俗易懂;

    5:成熟的校验机制,来保证正确。可以使用Schema或者是DTD来对xml的正确性进行校验。

    6:基于xml配置的时候,只需要修改xml即可,不需要对现有的程序进行修改。

    7:容易与其他系统进行数据交互。数据共享方便

    Xml缺点

    虽然上面列出了很多优点,但是xml也有缺点

    1:应用程序中如果使用了xml配置,需要解析xml的工具或者是是第三方类库的支持;

    2:解析xml的时候必然会占用资源,势必会影响到应用程序的性能;

    以java为例,无论是将xml一次性装置到内存中,还是一行一行读取解析的,都会占用资源的。

    3:xml配置文件过多,会导致维护变得困难

    4:在程序编译期间无法对其配置项的正确性进行验证,只能在运行期发现。

    5:出错后,排错变得困难。往往在配置的时候,一个手误就会出现莫名其妙的错误(虽然事出必有妖,但是排查真难);

    比如,xml配置bean信息的时候,如果class的值带有空格,这种不好检查的,是比较麻烦的。排查起来很费事。

    6:开发的时候,既要维护代码又要维护配置文件,使得开发的效率降低;

    7:代码与配置项之间有时候会存在很多“潜规则”.改变了任意一方,都有可能影响到另一方的使用。这是个大坑

    比如:自定义的标记,如果其他开发不清楚这些的话,修改了无论是代码还是xml的配置,都会导致程序不能正常运行。

    8:开发工具对xml的验证支持的不是很好。

    比如idea,对xml正确性,如果是自定义的,验证就不是很好。

    说完xml的优缺点,我们在来看看注解的优缺点

    注解优点

    1:注解的解析可以不依赖于第三方库,可以之间使用Java自带的反射

    2:注解和代码在一起的,之间在类上,降低了维护两个地方的成本

    3:注解如果有问题,在编译期间,就可以验证正确性,如果出错更容易找

    4:使用注解开发能够提高开发效率。不用多个地方维护,不用考虑是否存在“潜规则”

    注解缺点:

    1:修改的话比较麻烦。如果需要对注解进行修改的话,就需要对整个项目重新编译

    2:处理业务类之间的复杂关系,不然xml那样容易修改,也不及xml那样明了

    3:在程序中注解太多的话,会影响代码质量,代码简洁会有影响

    4:如果后来的人对注解不了解,会给维护带来成本

    5:注解功能没有xml配置齐全

    简单总结下两者优缺点比较

    注解:

    优点:

    简化配置

    使用起来直观且容易,提升开发的效率

    类型安全,容易检测出问题

    缺点:

    修改起来比xml麻烦

    如果不项目不了解,可能给开发和维护带来麻烦

    Xml:

    优点:

    把类与类之间松解偶;修改方便;容易扩展

    容易和其他系统进行数据交互

    对象之间的关系一目了然

    缺点:

    配置冗长,需要额外维护;影响开发效率

    类型不安全,校验不出来,出错不好排查

    注解简单概括:写起来比较简单、方便,看起来也简洁,但是修改麻烦

    Xml配置概括:写起来比较灵活、修改方便,但是写和维护麻烦

    大家还有什么更好的理解?欢迎分享出来

  • 相关阅读:
    指针的相关概念
    Linux库函数
    计算机组成
    常用校验码及示例
    判断文件是否被占用的三种方法
    服务主机superFetch占用磁盘过多
    renameTo()判断文件是否被占用(判断大文件是否完成拷贝这个动作)
    xshell下mysql数据库只导出表结构不导出数据
    Java_判断文件是否写入完成
    Java_监听文件夹或者文件是否有变动
  • 原文地址:https://www.cnblogs.com/ma919755374/p/13468316.html
Copyright © 2020-2023  润新知