注解和XML的使用选择

转载 2015年07月09日 22:44:46

现在注解使用的越来越广泛;它的主要好处是写起来比xml要方便的多,但是它们的目的都是一样的,元数据。

 

我的理解:

注解:是一种分散式的元数据,与源代码紧绑定。

xml:是一种集中式的元数据,与源代码无绑定。

 

因此注解和XML的选择上可以从两个角度来看:分散还是集中,源代码绑定/无绑定。

 

注解的缺点:

1、很多朋友比如在使用spring注解时,会发现注解分散到很多类中,不好管理和维护;这个其实要借助工具,我目前使用的是IDEA,它在这方面表现的非常好;当然现在还有Spring的STS,也是不错的; 所以借助工具,能解决这个问题;

2、注解的开启/关闭必须修改源代码,因为注解是源代码绑定的,如果要修改,需要改源码,这个有这个问题,所以如果是这种情况,还是使用XML配置方式;比如数据源;

3、注解还一个缺点就是灵活性,比如在之前翻译的Spring Framework 4.0 M1: WebSocket 支持;在实现复杂的逻辑上,没有XML来的更加强大;注解就是要么用,要么不用,比如之前的jpa bean validation,要么全,要么没;遇到这种情况很痛苦;

4、还一种就是约定大于配置,但是在处理一些复杂的情况下,注解还是需要的(如Spring的数据验证/数据绑定注解很强大);

5、通用配置还是走XML吧,比如事务配置,比如数据库连接池等等,即通用的配置集中化,而不是分散化,如很多人使用@Transactional来配置事务,在很多情况下这是一种太分散化的配置;

6、XML方式比注解的可扩展性和复杂性维护上好的多,比如需要哪些组件,不需要哪些;在面对这种情况,注解扫描机制比较逊色,因为规则很难去写或根本不可能写出来;

 

 

注解的好处:

1、XML配置起来有时候冗长,此时注解可能是更好的选择,如jpa的实体映射;注解在处理一些不变的元数据时有时候比XML方便的多,比如springmvc的数据绑定,如果用xml写的代码会多的多;

2、注解最大的好处就是简化了XML配置;其实大部分注解一定确定后很少会改变,所以在一些中小项目中使用注解反而提供了开发效率,所以没必要一头走到黑;

3、注解相对于XML的另一个好处是类型安全的,XML只能在运行期才能发现问题。

 

注解也好,XML也好,我们还是需要一些开关/替换机制来控制特殊需求,以改变那种要么全部 要么没有的方案。

 

还一种呼声就是约定大于配置,这种方案可能在某些场景下是最优的,但是遇到一些复杂的情况可能并不能解决问题,所以此时注解也是一个不错的方案。尤其在使用springmvc时,好处是能体会的出的。

 

不管使用注解还是XML,做的事情还是那些事情,但注解和XML都不是万能的,满足自己的需求且已一种更简单的方式解决掉问题即可。

 

就像探讨一下技术问题,很多人都带有很强的个人喜好来评判一个东西的好坏,这种探讨没有任何意义,我们最终的目的是解决方案,所以我们应该探讨的是能不能解决问题,能不能以更容易理解的方式解决问题,能不能更简单的解决问题。

 

不管是约定大于配置、注解还是XML配置也好,没有哪个是最优的,在合适的场景选择合适的解决方案这才是重要的。就像设计模式一样:是对特定环境中重复出现的特定问题的一个经过前人验证了的解决方案。

相关文章推荐

spring中注解和xml混合使用

注解和xml混合使用 步骤: 1.将所有的bean都配置xml中        2.将所有的依赖都使用注解        @Autowired   ...

JAXB注解 java 关于xml的注解,自动生成xml文件 - @XML***

JAXB(Java API for XML Binding),提供了一个快速便捷的方式将Java对象与XML进行转换。在JAX-WS(Java的WebService规范之一)中,JDK1.6 自带的版...
  • lhzjj
  • lhzjj
  • 2013-09-18 09:40
  • 40388

JAXB注解 java 关于xml的注解,自动生成xml文件 - @XML***

一.Jaxb处理java对象和xml之间转换常用的annotation有: @XmlType@XmlElement@XmlRootElement@XmlAttribute@XmlAccessor...

spring 注解机制和XML配置机制之间的比较

spring的annotation注入机制与XML注入机制本质上是相同的。annnotation简洁一些,遵循一些Coc. 有些人喜欢annotation, 这样bean的声明,注册,注...

在Xml中加注释的方法

并非用于 XML 分析器的内容(例如与文档结构或编辑有关的说明)可以包含在注释中。 注释以  开始并以 --> 结束,例如 。 注释可以出现在文档序言中,包括文档类型定义 (DTD);文...

Spring整合JMS(消息中间件)实例

本篇文章主要描述了如何配置Spring-JMS,至于为何这样配置及Spring-JMS相关介绍,请阅读这篇文章:Spring整合JMS(消息中间件)。我们这里的消息broker用的是ActiveMQ。...

深入浅出JMS(三)--ActiveMQ简单的HelloWorld实例

JMS其实并没有想象的那么高大上,看完这篇博文之后,你就知道什么叫简单。。

深入浅出JMS(二)--ActiveMQ简单介绍以及安装

现实的企业中,对于消息通信的应用一直都非常的火热,而且在J2EE的企业应用中扮演着特殊的角色,所以对于它研究是非常有必要的。

注解和xml

注解:是一种分散式的元数据,与源代码紧绑定。 xml:是一种集中式的元数据,与源代码无绑定。   因此注解和XML的选择上可以从两个角度来看:分散还是集中,源代码绑定/无绑定。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)