越看这些文章,感觉Effect java 第二版里面基本都有..
原文地址
http://www.c2.com/cgi/wiki?AnnotationsOverNamingConventions
许多的类库,框架和系统熟练的操作Java对象和类,比如在ObjectRelationalMapping 工具中持久化对象到数据库中,XML绑定工具用于映射XML文档与Java对象,类库从流中读写对象,测试框架如同编写一个Java类的方式读取和运行测试.
这些成熟的系统工作在元数据级别,熟练控制Java类,方法,字段和无类型对象,从元数据级别表达他们必须知道的信息区引导他们的操作,一个对象必须确定怎么去关联改特性从一个对象到数据库中的表盒列,一个serialiser 必须知道如何将一个对象描述成一个二进制流,一个测试框架必须知道那个类包含了测试,那个方法必须被测试而不能直接运行.
在Java1.5之前,成熟的代码知道推断出这些信息通过代码的约束,比如TagInterfaces,这种继承级别的和NamingConventions,以及使用配置文件等.
命名约束能够限制程序员使用的词汇,TagInterfaces滥用一种语言的特性,将使得代码难以理解,强迫类具有一个特别的基类使得它难于被复用,以及使用继承去移除重复.
Java5引入了一种新的语言特性,annotations,借鉴之C#,一个注解是一种明确的元数据附加在一个类,方法,字段或者参数之上,一个语言的元素必要时能够添加多个注解,注解能够使用反射工具去了解他们,这使得程序员溶入他们的类使用不同的反射工具,而不需要去跟随任何规定编码约束或者设计格式.
然而,注解语法是难看的,以及许多注解使得代码杂乱与难于阅读.
什么时候你能够使用注解代替命名约束呢?
在Java1.5之前,TagInterfaces被使用提供类的元数据,那如果是方法呢,遗憾的是,同时反射允许了解关于类的层次结构,和从此实现TagInterfaces,这是并不似类似的机制使用在方法上,通过一个方法的名字,从此,元数据被与方法名纠缠在一起,比如JavaBeans使用方法,必须使用get和set开头,用于BeanBox去设置和修改一个直接类的属性.
注解提供一种更灵活的机制,一种使用两个注解去代替get/set约定的可能, @BeanGetter 与 @BeanSetter,或者可能只使用一个 @Bean 注解与一个枚举参数,@Bean(MethodType.GETTER), @Bean(MethodType.SETTER). 一个BeanBox将使用注解信息代替固定名称方法.
当是,注解难看和混乱了代码比起使用 SystemOfNames去表达相同的信息.
他们使用相同的模式,所以可以适当的在不同的区域使用,不过最好使用文档进行规定,不要因为个人爱好进行自由使用.避免引起不必要的混乱(自己加入...大概意思)
下面将介绍一些使用这两种风格的地方.
实际上,JavaBeans没有必要使用get和set前缀,这种映射命名只会在BeanInfo中使用.
参考文档
[url]http://java.sun.com/j2se/1.4.2/docs/api/java/beans/BeanInfo.html [/url]
[url]http://java.sun.com/j2se/1.4.2/docs/api/java/beans/PropertyDescriptor.html [/url]
一个更好的例子可能是JUnit4和TestNG,他们使用@Test注解识别方法去运行测试,在JUnit3可以看到方法名使用"test"开头.
其他一些例子
Hibernate 3使用注解去定义如何将一个对象映射到关系型数据库的一行记录之上.
RubyOnRails' ActiveRecord 使用命名约定
JAXB 2使用注解定义如何将一个对象映射到一个xml文档,以及如一个将一个类关联到XSD
schema.
XStream 使用命名约定,关联类,属性或者字段名与XML元素和熟悉名.
批注:这个翻译感觉很乱,一些使用的术语并不太熟悉.有待提高,关键是坚持 ,加油咯!
如果你看的不舒服,抱歉.
分享到:
相关推荐
annotations-api.jar注解
在Android开发中,注解(Annotations)是一种强大的工具,它能帮助我们简化代码,提高代码的可读性和可维护性。Android Annotations库是专门为Android应用设计的一个注解处理框架,它提供了一系列预定义的注解,可以...
jackson-annotations, 对于Jackson数据处理器,核心注解( 仅依赖于 概述这个项目包含了Jackson数据处理器的通用注释,用于值和处理程序类型。 惟一不包括的注释是需要依赖于 Databind包的注释。项目包含版本 2.0和上...
2. **创建注解的Pojo类**:接着,定义一个Java类,并使用JSoup-Annotations的注解来标注字段。比如,如果你要解析一个包含标题、作者和内容的博客文章,可以创建如下类: ```java public class BlogPost { @Id(...
Android Annotations框架是一个强大的工具,它通过使用Java注解(Annotations)来简化Android应用的开发,提高了编码效率。本文将深入探讨Android Annotations的使用方法和优势,帮助开发者更好地理解和运用这一框架...
最新注解JAR包. 找了N久才找到的.
Annotations(注解)是一种元数据,它提供了在不改变程序行为的同时,向编译器或JVM提供额外信息的方式。这些信息可以用于代码分析、编译时检查、运行时处理等目的。 在描述中提到的"annotations压缩文件"很可能是...
在编程领域,注解(Annotations)是一种元数据,它提供了在代码中附加信息的方式,这些信息可以被编译器、解释器或者其他的工具用来影响代码的处理方式。注解在QL(Query Language)中同样重要,它允许程序员对类、...
1. **注解驱动**: Hibernate Annotations 允许开发者使用 Java 注解来定义实体类、属性、关联关系等,这些注解替代了传统的 XML 映射文件,使得代码更加简洁,更易于维护。 2. **实体注解**: `@Entity` 注解标记一...
在Android开发中,注解(Annotations)是一种元数据,它提供了在代码中附加信息的方式,这些信息可以在编译时或运行时被解析和处理。`support-annotations.zip`是一个包含Android支持库中注解相关类的压缩包,主要...
【标题】"jboss-annotations-ejb3.jar" 是一个重要的Java档案,它包含了JBoss企业级JavaBean(EJB)3.0的注解支持。这个库是JBoss应用服务器的一部分,允许开发者在EJB组件中使用注解来简化配置和部署过程。 【描述...
Hibernate Annotations是Hibernate 3.x系列引入的新特性,它允许开发者在Java实体类上直接使用注解来定义对象关系映射信息,替代了传统的Hibernate XML配置文件。这种注解方式提高了开发效率,减少了配置文件的维护...
`org.springframework.roo.annotations`包是Spring Roo的核心组成部分之一,包含了大量用于元编程的注解,这些注解在构建基于Spring的应用程序时起着至关重要的作用。本文将深入探讨这个包中的注解以及它们在Maven...
本篇将深入探讨Hibernate3中的注解功能以及与Commons Annotations的结合使用,旨在帮助开发者更好地理解和应用这些技术。 首先,让我们来看看核心组件`hibernate3.jar`。这个JAR文件包含了Hibernate3框架的基础组件...
要获取类上的注解,可以使用`Class`对象的`getAnnotations()`方法,它返回一个包含该类所有注解的数组。例如: ```java Class<?> clazz = MyClass.class; Annotation[] annotations = clazz.getAnnotations(); ...
功能:完全注解框架,一切皆为注解:声明控件,绑定控件,...缺点:文档是全英文的加上功能比较少没有具体研究,由于一切都是注解,感觉效率不高,不过根据官方介绍说并不是使用的反射加载,所以效率比一般注解高很多。
- **组合注解**(Composed Annotations):允许创建包含多个注解的复合注解,提高代码复用。 - **属性别名和覆盖**:注解属性可以有别名,且在不同层次上可以进行覆盖,以适应复杂场景。 4. **Spring 元注解** -...
本文将深入探讨如何使用注解配置Action,并解决在实际应用中可能遇到的`java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils`异常。 首先,让我们了解Struts2中的Action注解。`@Action`是Struts...
Hibernate Annotations是Hibernate框架的一个重要组成部分,它允许开发人员通过在Java实体类上使用注解来定义数据模型,从而避免了传统的XML配置文件。这种做法提高了代码的可读性和维护性。 **核心概念** 1. **...
本资源“Annotations 所需jar包.rar”显然是为了支持使用注解(Annotation)来配置SSH框架,使得代码更加简洁、可读性更强。注解是一种元数据,它提供了在源代码中嵌入信息的方式,这些信息可以被编译器或运行时环境...