@Target 介紹
Target.java 類位於 JDK 的 rt.jar 內,屬於一個 JDK 註解
它是用來修飾註解的,是註解的註解,稱之爲元註解
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Target {
ElementType[] value();
}
@Target 作用
該註解是指定註解的修飾的對象範圍(註解可以用在什麼地方),內部有一個數組存放的枚舉類型 ElementType
public enum ElementType {
/** 類,接口(包括註釋類型),或枚舉 */
TYPE,
/** 字段(包括枚舉常數)*/
FIELD,
/** 方法 */
METHOD,
/** 形式參數 */
PARAMETER,
/** 構造函數 */
CONSTRUCTOR,
/** 局部變量 */
LOCAL_VARIABLE,
/** 註解類型 */
ANNOTATION_TYPE,
/** 包聲明 */
PACKAGE,
/**
* 類型參數聲明 (JDK VERSION >=1.8)
*/
TYPE_PARAMETER,
/**
* 使用的類型 (JDK VERSION >=1.8)
*/
TYPE_USE
}
常見使用示例
@Retention 註解使用 ANNOTATION_TYPE
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Retention {
RetentionPolicy value();
}
@RequestMapping 註解使用 TYPE 和 METHOD
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
String name() default "";
@AliasFor("path")
String[] value() default {};
@AliasFor("value")
String[] path() default {};
RequestMethod[] method() default {};
String[] params() default {};
String[] headers() default {};
String[] consumes() default {};
String[] produces() default {};
}
@PathVariable 註解使用 PARAMETER
@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface PathVariable {
String value() default "";
}
@Autowired 註解使用 CONSTRUCTOR、FIELD、METHOD、ANNOTATION_TYPE
@Target({ElementType.CONSTRUCTOR, ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Autowired {
boolean required() default true;
}