• spring boot: Annotation 注解之@Target的用法介绍


    前言

    目前,越来越多的架构设计在使用注解,例如spring3.0、struts2等框架。让我们先来看看注解的定义。如下是一段使用了JDK 5 Annotation @Target的代码:

    @Target({ElementType.METHOD})
    @Retention(RetentionPolicy.RUNTIME)
    @Inherited
    @Documented
    public @interface AsynLog {
      
     }
    

      

    一、@Target的用法


    java.lang.annotation.Target

    用于设定注解使用范围

    java.lang.annotation.ElementType

    Target通过ElementType来指定注解可使用范围的枚举集合


    二、ElementType的用法

     

    取值 注解使用范围
    METHOD 可用于方法上
    TYPE 可用于类或者接口上
    ANNOTATION_TYPE 可用于注解类型上(被@interface修饰的类型)
    CONSTRUCTOR 可用于构造方法上
    FIELD 可用于域上
    LOCAL_VARIABLE 可用于局部变量上
    PACKAGE 用于记录java文件的package信息
    PARAMETER 可用于参数上

    这里重点说明下:ElementType. PACKAGE。它并不是使用在一般的类中,而是用在固定的文件package-info.java中。这里需要强调命名一定是“package-info”。由于package-info.java并不是一个合法的类,使用eclipse创建类的方式会提示不合法,所以需要以创建文件的方式来创建package-info.java。

    例如,定义可使用范围PACKAGE:

    @Target({ElementType.PACKAGE,ElementType.METHOD})
    @Retention(RetentionPolicy.RUNTIME)
    @Inherited
    @Documented
    public @interface AsynLog {
      
    }
    

     

     那么,创建文件:package-info.java,内容如下:

    @AsynLog
    package org.my.commons.logs.annotation; 
    

      

  • 相关阅读:
    python 快速排序详述
    GitHub 小试牛刀(踩坑记录)
    python 内部类
    Django1.11搭建一个简易上传显示图片的后台
    Ubuntu16.04卸载opencv2.4.9并安装opencv3.2.0+contrib
    OpenCV4Android背景建模(MOG、MOG2)
    CentOS7.3安装NVIDIA-1080ti驱动、cuda、cudnn、TensorFlow
    TensorFlow Object Detection API(Windows下测试)
    关于git常见的一些问题
    聊聊Java中的反射(一)
  • 原文地址:https://www.cnblogs.com/achengmu/p/8275595.html
Copyright © 2020-2023  润新知