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的值带有空格,这种欠好检查的,是对照贫苦的。排查起来很费事。

多云数据管理深度实践上 | Ansible安装OpenSDS(All in One)

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

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

好比:自界说的符号,若是其他开发不清楚这些的话,修改了无论是代码照样xml的设置,都市导致程序不能正常运行。

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

好比idea,对xml准确性,若是是自界说的,验证就不是很好。

说完xml的优瑕玷,我们在来看看注解的优瑕玷

注解优点

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

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

3:注解若是有问题,在编译时代,就可以验证准确性,若是失足更容易找

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

注解瑕玷:

1:修改的话对照贫苦。若是需要对注解举行修改的话,就需要对整个项目重新编译

2:处置营业类之间的复杂关系,否则xml那样容易修改,也不及xml那样明晰

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

4:若是厥后的人对注解不领会,会给维护带来成本

5:注解功效没有xml设置齐全

简朴总结下两者优瑕玷对照

注解:

优点:

简化设置

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

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

瑕玷:

修改起来比xml贫苦

若是不项目不领会,可能给开发和维护带来贫苦

Xml:

优点:

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

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

工具之间的关系一目了然

瑕玷:

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

类型不平安,校验不出来,失足欠好排查

注解简朴归纳综:写起来对照简朴、利便,看起来也简练,然则修改贫苦

Xml设置归纳综合:写起来对照天真、修改利便,然则写和维护贫苦

人人另有什么更好的明白?迎接分享出来