zoukankan      html  css  js  c++  java
  • 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配置概括:写起来比较灵活、修改方便,但是写和维护麻烦

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

  • 相关阅读:
    Python Revisited Day 13 (正则表达式)
    Python Revisited Day 06 (面向对象程序设计)
    Python Revisited (变量)
    Python Revisited Day 05(模块)
    Python Revisited Day 04 (控制结构与函数)
    Python Revisited Day 03 (组合数据类型)
    Numpy
    Python Revisited Day 01
    Python3使用openpyxl读写Excel文件
    Python3操作YAML文件
  • 原文地址:https://www.cnblogs.com/kaigejava/p/12375884.html
Copyright © 2011-2022 走看看