什么是annotations
在创建EJB组件时,必需提供一些定义,使得EJB组件使用一些服务例如:安全服务,持久化服务,事务服务。EJB容器可以提供这些服务,这样EJB只要实现业务逻辑就可以了。但是说到底EJB容器使用EJB组件的元数据来提供这些服务,在以前EJB的元数据是以XML配置文件形式出现的,这些配置文件与EJB源文件是分开的。 一 什么是Annotation 在已经发布的JDK1.5(tiger)中增加新的特色叫 Annotation。Annotation提供一种机制,将程序的元素如:类,方法,属性,参数,本地变量,包和元数据联系起来。这样编译器可以将元数据存储在Class文件中。这样虚拟机和其它对象可以根据这些元数据来决定如何使用这些程序元素或改变它们的行为。 二 定义一个简单的Annotation并使用它 1.定义Annotation 定义一个Annotation是什么简单的,它采取的是类似于Interface的定义方式: “@+annotation类型名称+(..逗号分割的name-value对...)”
代码
<script type="text/javascript">render_code();</script> @Retention这个meta-annotation表示我们创建的SimpleAnnotation这个Annotation将会存储在Class文件中,并在java VM运行时加载它。@Target这个meta-annotation表示我们创建的SimplwAnnotation将会为描述方法,而@interface SimpleAnnotation是我们自定义的Annotation,它有一个成员叫value,返回值是String。 2.使用Annotation
代码
<script type="text/javascript">render_code();</script> 一个Annotation用于程序元素(在本例中是method),在method方法之前用(@Annotation名称(name=value,name=value.....)。在本例中是@SimpleAnnotation(value="Pass:This method will Pass")。每个annotation具有一个名字和成员个数>=0,当只有一个单一的成员时,这个成员就是value。我们也可以这样写 @SimpleAnnotation("Fail:This method will Fail")。至此@SimpleAnnotation将Pass和Fail联系起来了。 3.在运行时访问Annotation 一旦Annotation与程序元素联系起来,我们可以通过反射访问它们并可以取得它们的值。我们使用一个新的interface:java.lang.reflect.AnnotatedElement。java.lang.reflect.AnnotatedElement接口中的方法有: a. boolean isAnnotationPresent(Class annotationType) 如果指定类型的注释存在于此元素上,则返回 true,否则返回 false。 如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。 返回此元素上存在的所有注释。 返回直接存在于此元素上的所有注释。 下面我们列出一些实现了AnnotatedElement 接口的类 1. java.lang.reflect.AccessibleObject 2. java.lang.Class 3. java.lang.reflect.Constructor 4. java.lang.reflect.Field 5. java.lang.reflect.Method 6. java.lang.Package 下面的Example程序说明了如何在运行环境访问Annotation
代码
<script type="text/javascript">render_code();</script> Java 中的Annotation的定义 Java中的Annotation Java定义了几个标准的meta-annotation,在新Package中java.lang.annotation 中包含了以下meta-annotation: meta-annotation 说明 @Target 1. annotation的target是一个被标注的程序元素。target说明了annotation所修饰的对象范围:annotation可被用于packages、types(类、接口、枚举、annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在annotation类型的声明中使用了target可更加明晰其修饰的目标。 meta-annotation 说明 2. ElementType的定义 TYPE// Class, interface, or enum (but not annotation) METHOD// Method (does not include constructors) PARAMETER// Method parameter CONSTRUCTOR// Constructor LOCAL_VARIABLE// Local variable or catch clause ANNOTATION_TYPE// Annotation Types (meta-annotations) PACKAGE// Java package @Retention 1. SOURCE//按照规定使用注释,但是并不将它保留到编译后的类文件中 2. CLASS//将注释保留在编译后的类文件中,但是在运行时忽略它 3. RUNTIME//将注释保留在编译后的类文件中,并在第一次加载类时读取它 @Documented Documented 表示注释应该出现在类的 Javadoc 中 @Inherited 一个Annotation将被继承 三个标准的Annotation 在java.lang包中: @Deprecated 对不再使用的方法进行注释 下例来说明这三个标准的Annotation:
代码
<script type="text/javascript">render_code();</script> 二、Annotation使用实例 一个组合的Annotation,注释类的 a. 商标Annotation
代码
<script type="text/javascript">render_code();</script> b.License的annotation
代码
<script type="text/javascript">render_code();</script> c.测试类
代码
|
什么是annotations相关推荐
- Unable to complete the scan for annotations for web application
2019独角兽企业重金招聘Python工程师标准>>> Unable to complete the scan for annotations for web application ...
- EffectiveJava(v3) - chapter5: Enums And Annotations
Enums And Annotations Java中支持两种特殊的引用类型: 一种特殊的类, 枚举; 一种特殊的接口, 注释. 本章主要是讲如何高效地使用这两种类型. Introduce Effec ...
- expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.spring
在Spring项目中自动想用注解的方式,在controller里面注入Service但是报错,错误信息如下: [WARNING] Exception encountered during contex ...
- R语言使用magick包的image_annotate函数在图片中添加文本标签信息、自定义文本标签内容的位置、色彩(Text annotations)
R语言使用magick包的image_annotate函数在图片中添加文本标签信息.自定义文本标签内容的位置.色彩(Text annotations) 目录
- [Hibernate] - Annotations - One To One
Hibernate annotation 一对一的两种实现: 1)幅表中有主表的主键ID做为引用 2)幅表的主键即为主表的ID hibernate.cfg.xml <?xml version=& ...
- DeepFashion: Powering Robust Clothes Recognition and Retrieval with Rich Annotations – CVPR 2016
DeepFashion: Powering Robust Clothes Recognition and Retrieval with Rich Annotations – CVPR 2016 论文( ...
- 异常处理:SEVERE: Unable to process Jar entry [......]for annotations java.io.EOFException
异常处理:SEVERE: Unable to process Jar entry [......]for annotations java.io.EOFException 参考文章: (1)异常处理: ...
- hibernate annotations和hbm.xml配置文件在spring中的并存配置
因为整合了不同的系统,一套系统使用的是hibernate annotation,另一套系统使用的是hbm.xml 偷懒不想重构,又不想修改太多,所以决定整合hibernate annotations和 ...
- WebApi数据验证——编写自定义数据注解(Data Annotations)
2019独角兽企业重金招聘Python工程师标准>>> 配合ModelState使用,关于使用方法,参考微软文档 https://docs.microsoft.com/en-us/a ...
- How those spring enable annotations work--转
原文地址:http://blog.fawnanddoug.com/2012/08/how-those-spring-enable-annotations-work.html Spring's Java ...
最新文章
- WinSock网络编程基础(3)server
- 杀毒软件已经 OUT 了!未来 CPU 也可以检测病毒
- JVM逃逸分析(同步省略、标量替换、栈上分配)
- 关于C语言中递归的一点点小问题
- 前端学习(2050)vue之电商管理系统电商系统之实现node创建服务器
- 53 - II. 0~n-1中缺失的数字
- Redis的安装与使用
- LeetCode 451. 根据字符出现频率排序(Sort Characters By Frequency)
- 李迟2011年3月代码积累
- ARCGIS地理信息系统学习笔记001--认识ARCGIS
- ng-app一些使用
- 移动机器人综合性能对比分析
- Java 8 Stream 闪亮登场!
- 10本经典的管理学书籍推荐,关于管理学的书都在这里了
- 书家必备——容易寫錯用錯的繁體字一百例
- 中国大学MOOC C语言程序设计(大连理工大学) 课后编程题 第九周题解(个人向仅供参考)
- 联想u盘启动linux,联想thinkpad e335台式机bios设置u盘启动的方法
- Matplotlib的柱状图
- java打怪升级地图
- 一键GHOST是什么?