【第22期】观点:IT 行业加班,到底有没有价值?

注解和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配置机制之间的比较

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

注解和xml

注解:是一种分散式的元数据,与源代码紧绑定。 xml:是一种集中式的元数据,与源代码无绑定。   因此注解和XML的选择上可以从两个角度来看:分散还是集中,源代码绑定/无绑定。 ...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

注解的方式发布接口,解析XML及返回

/*获取通过WebService传过来的xml,数据校验通过解析后保存到数据库返回一个xml,数据校验不通过也返回一个XML*/ import java.sql.Date; import java....

Hibernate实体类注解配置与xml配置

Hibernate实现有两种配置,xml配置与注释配置 hibernate实现有两种配置,xml配置与注释配置。 (1):xml配置:hibernate.cfg.xml (放到src目录下...

在Xml中加注释的方法

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

Mybatis XML和接口注解 两种方式CURD

mybatis CURD

使用.NET中的XML注释(一) -- XML注释标签讲解

摘要   .Net允许开发人员在源代码中插入XML注释,这在多人协作开发的时候显得特别有用。 C#解析器可以把代码文件中的这些XML标记提取出来,并作进一步的处理为外部文档。 这篇文章将展示如何使...

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

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

Android中,xml代码注释注意事项

本文转载自:http://blog.csdn.net/pipisorry/article/details/24833325 怎么在android的XML文件中添加注释 Android的...

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
  • 37326
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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