美文网首页
java注解类

java注解类

作者: 时光不说话 | 来源:发表于2017-09-21 10:53 被阅读0次

查看代码的时候发现了一个annotation类型的文件,好奇百度了一下,又有新技能get。以前我了解的java注解,就是用//等符号标注的注释,或者@author,再或者,就是最近接触的testng框架注释。

今天看到的代码如下:

 package com.api.common;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE, ElementType.CONSTRUCTOR})
public @interface DBUnitScript {

public String value();

public String dataSourceName();
}

文件类型为annotation,即注解。这是一个自定义的注解(Annotation)类,即DBUnitScript, 在定义注解(Annotation)类时使用了另一个注解类Retention。
*在注解类上使用另一个注解类,那么被使用的注解类就称为元注解。

新建注解类
新建一个class,在kind中选择annotation类型文件,即可新建一个注解类。


以下部分内容摘抄自孤傲苍狼,侵删。原帖地址:http://www.cnblogs.com/xdp-gacl/p/3622275.html


注解就相当于一个你的源程序要调用一个类,在源程序中应用某个注解,得事先准备好这个注解类。就像你要调用某个类,得事先开发好这个类。

java中元注解有四个: @Retention @Target @Document @Inherited

1、Retention注解决定注解的生命周期

1、@Retention()
这里是在注解类DBUnitScript上使用另一个注解类即Retention注解,这里的Retention称为元注解。
2、@Retention(RetentionPolicy.SOURCE)
这个注解的意思是让DBUnitScript注解只在java源文件中存在,编译成.class文件后注解就不存在了
3、@Retention(RetentionPolicy.CLASS)
这个注解的意思是让DBUnitScript注解在java源文件(.java文件)中存在,编译成.class文件后注解也还存在,
4、 @Retention(RetentionPolicy.RUNTIME)
意思是让DBUnitScript这个注解的生命周期一直程序运行时都存在
5、被DBUnitScript注解类标识的类被类加载器加载到内存中后MyAnnotation注解就不存在了

@Retention元注解的讲解:其三种取值:RetentionPolicy.SOURCE、RetentionPolicy.CLASS、RetentionPolicy.RUNTIME分别对应:Java源文件(.java文件)---->.class文件---->内存中的字节码

2、Target注解

Target注解决定注解可以加在哪些成分上,如加在类身上,或者属性身上,或者方法身上等成分,@Target默认值为任何元素(成分)

如:

@Target({ElementType.METHOD, ElementType.TYPE, ElementType.CONSTRUCTOR})

@Target:注解的作用目标

@Target(ElementType.TYPE) //接口、类、枚举、注解
@Target(ElementType.FIELD) //字段、枚举的常量
@Target(ElementType.METHOD) //方法
@Target(ElementType.PARAMETER) //方法参数
@Target(ElementType.CONSTRUCTOR) //构造函数
@Target(ElementType.LOCAL_VARIABLE)//局部变量
@Target(ElementType.ANNOTATION_TYPE)//注解
@Target(ElementType.PACKAGE) ///包

3、@Document:说明该注解将被包含在javadoc中

4、 @Inherited:说明子类可以继承父类中的该注解


为注解添加属性

@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE, ElementType.CONSTRUCTOR})
public @interface DBUnitScript {

//属性
public String value();//数据脚本地址

public String dataSourceName();
}

把自定义的注解类加到某个类上

@ DBUnitScript 
public class AnnotationUse{

}

应用属性

    @DBUnitScript(value = "sql/addCustomAccountTitles.sql", dataSourceName = "dataSource")
    //在执行方法前先调用DBUnitScript注解

    public void testCustomerAccountTitles(SelectItem[] cols, Object[] data) throws Exception{

    String api = "";//请求api
    Map<String, String> params = new HashMap<>();
    params.put("pId", data[2].toString());
    
    Response response = request(api, HttpMethod.POST, params);
}

相关文章

  • 注解

    Java 注解原理 下面来看看Java中注解是如何实现的 创建注解类Inter: 创建测试类Test: 在程序第二...

  • Hibernate注解

    JPA Java Persistence API----java持久化接口 Hibernate注解分类 类级别注解...

  • Java基础:反射

    反射注解动态代理相关阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 ...

  • Java基础:注解

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 1. 概述 注解...

  • Java注解

    一、注解介绍 Java注解(Annotation)又称 Java 标注。Java 语言中的类、方法、变量、参数和包...

  • Spring注解原理探索(三)

    之 Java如何识别注解 关键词:Java 反射java.lang.reflect 包,实现反射功能的工具类。注解...

  • Kotlin 注解

    Kotlin 的注解完全兼容 Java 的注解。 声明注解 可以通过向注解类添加元注解(meta-annotati...

  • Java常用注解

    Java常用注解 Controller常用注解 @Controller 注解在类上。定义了一个控制器类,并检测该方...

  • Java注解类 - 注解类入门

    茨威格在《人类群星闪耀时》写到那些改变历史进程的小人物。原本默默无闻,却一鸣惊人。我们日常生活中,容易被忽略的细节...

  • Java基础:类加载器

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 1. 什么是类加...

网友评论

      本文标题:java注解类

      本文链接:https://www.haomeiwen.com/subject/szygsxtx.html