博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring的注解配置与XML配置之间的比较
阅读量:5853 次
发布时间:2019-06-19

本文共 1623 字,大约阅读时间需要 5 分钟。

注释配置相对于 XML 配置具有很多的优势: 

它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。

如:使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO 的属性名、类型等信息,如果关系表字段和 PO 属性名、类型都一致,您甚至无需编写任务属性映射信息——因为这些信息都可以通过 Java 反射机制获取。 

注释和 Java 代码位于一个文件中,而 XML 配置采用独立的配置文件,大多数配置信息在程序开发完成后都不会调整,

如果配置信息和 Java 代码放在一起,有助于增强程序的内聚性。而采用独立的 XML 配置文件,程序员在编写一个功能时,往往需要在程序文件和配置文件中不停切换,这种思维上的不连贯会降低开发效率。 

因此在很多情况下,注释配置比 XML 配置更受欢迎,注释配置有进一步流行的趋势。Spring 2.5 的一大增强就是引入了很多注释类,现在您已经可以使用注释配置完成大部分 XML 配置的功能。 

 

注释配置和 XML 配置的适用场合 

是否有了这些 IOC 注释,我们就可以完全摒除原来 XML 配置的方式呢?答案是否定的。有以下几点原因: 

注释配置不一定在先天上优于 XML 配置。如果 Bean 的依赖关系是固定的,(如 Service 使用了哪几个 DAO 类),这种配置信息不会在部署时发生调整,那么注释配置优于 XML 配置;反之如果这种依赖关系会在部署时发生调整,XML 配置显然又优于注释配置,因为注释是对 Java 源代码的调整,您需要重新改写源代码并重新编译才可以实施调整。 

如果 Bean 不是自己编写的类(如 JdbcTemplate、SessionFactoryBean 等),注释配置将无法实施,此时 XML 配置是唯一可用的方式。 

注释配置往往是类级别的,而 XML 配置则可以表现得更加灵活。比如相比于 @Transaction 事务注释,使用 aop/tx 命名空间的事务配置更加灵活和简单。 

 

所以在实现应用中,我们往往需要同时使用注释配置和 XML 配置,对于类级别且不会发生变动的配置可以优先考虑注释配置;而对于那些第三方类以及容易发生调整的配置则应优先考虑使用 XML 配置。Spring 会在具体实施 Bean 创建和 Bean 注入之前将这两种配置方式的元信息融合在一起。 

 

 

XML配置的优缺点: 

优点有: 

1. XML配置方式进一步降低了耦合,使得应用更加容易扩展,即使对配置文件进一步修改也不需要工程进行修改和重新编译。 

2. 在处理大的业务量的时候,用XML配置应该更加好一些。因为XML更加清晰的表明了各个对象之间的关系,各个业务类之间的调用。同时spring的相关配置也能一目了然。 

当然,有人会说,用XML配置,在大的业务量时候会使得XML文件过大,不容易查看。这一点我们完全可以利用业务分解书写多个XML配置文件就可以了。 

缺点有: 

配置文件读取和解析需要花费一定的时间,配置文件过多的时候难以管理,无法对配置的正确性进行校验,增加了测试难度。 

 

annotation配置的优缺点: 

优点有: 

1. 在class文件中,可以降低维护成本,annotation的配置机制很明显简单 

2. 不需要第三方的解析工具,利用java反射技术就可以完成任务 

3. 编辑期可以验证正确性,差错变得容易 

4. 提高开发效率 

 

缺点有: 

1. 如果需要对于annotation进行修改,那么要重新编译整个工程 

2. 业务类之间的关系不如XML配置那样容易把握。 

3. 如果在程序中annotation比较多,直接影响代码质量,对于代码的简洁度有一定的影响

 

转自:https://www.cnblogs.com/yq12138/p/7210274.html

转载于:https://www.cnblogs.com/heiming/p/8243022.html

你可能感兴趣的文章
CodeChef Sereja and LCM(矩阵快速幂)
查看>>
实习日志(1)2011-12-30
查看>>
XML序列化与反序列化(续)
查看>>
实现简单的时间显示
查看>>
进程体系结构
查看>>
移动端开发适配的2中方案
查看>>
Oracle 千万级别数据查询优化
查看>>
Orchard是如何工作的?
查看>>
走向DBA[MSSQL篇] 面试官最喜欢的问题 ----索引+C#面试题客串
查看>>
ClistCtrl
查看>>
bzoj 3992 [SDOI2015]序列统计——NTT(循环卷积&&快速幂)
查看>>
POJ1006——中国剩余定理
查看>>
【MAC】虚拟机Mac固定分辨率
查看>>
ListActivity的使用
查看>>
VI 你不知道的事
查看>>
文件与键盘输入与输出
查看>>
深度遍历DFS---树
查看>>
SilverLight商业应用程序开发---学习笔记(3)
查看>>
正六面体用若干种颜色染色的问题解法
查看>>
Delphi高手突破(三) Delphi高级进阶
查看>>