「SpringBoot 相關注解」@Target 元註解

@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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章