JAVA注解原理 - 感性認識

一、什么是注解?

注解的英文是annotation,就是使用@符號來標注類、方法、類成員、局部變量、方法參數(shù)等。用于表示一些特殊的含義。比如我們常見的@Controller, @Service, @Repository, @Autowired等。

二、為什么要有注解? 注解有什么作用?

我理解這跟編程思想中的DRY(don't repeat yourself)的原則是吻合的。用統(tǒng)一的一個標識符@來標識一組具有相同屬性的對象。
在Spring中,框架會自動掃描被標注的類,并把使用@Componet標注的類以bean的形式注入到框架中。方便供框架管理這些類的創(chuàng)建與銷毀。
我們常用的JUnit,也會自動掃描被@Test標注的方法,認為它們是單獨供JUnit框架管理的單測方法。
所以,使用注解,就是為了方便我們?yōu)轭?、方法、屬性、參?shù)等對象打一個標簽,做一個標識。開發(fā)框架或架構(gòu)師可以根據(jù)這些標識做自己的邏輯處理。

三、如何實現(xiàn)自定義注解?

3.1 通過元注解來實現(xiàn)注解

拿我們經(jīng)常用到的@Autowired來舉例,

@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Autowired {

    /**
     * Declares whether the annotated dependency is required.
     * <p>Defaults to {@code true}.
     */
    boolean required() default true;

}

解釋:
通過 @interface 來聲明一個注解。

@Target 說明注解所修飾的對象范圍,取值的話,有

  1. CONSTRUCTOR: 構(gòu)造器
  2. FIELD: 域
  3. LOCAL_VARIABLE: 局部變量
  4. METHOD: 方法
  5. PACKAGE: 包
  6. PARAMETER: 參數(shù)
  7. TYPE: 類、接口、enum聲明

@Retention描述注解的生命周期,在什么時候生效,有3個

  1. SOURCE
  2. CLASS
  3. RUNTIME

@Documented說明可被javadoc此類工具文檔化

@Inherited說明被標注的類型是被繼承的(// TODO 舉例說明)

3.2 如何獲取注解名與值

通過反射。關(guān)于什么是反射,會單獨寫一個筆記來記錄。在這里,我們先有一個概念,就是可以通過某一種方法來獲取注解的名稱,以及其中的值。
// todo 舉例

@Hello
public class Any {

}

屬性上的

@Hello
private String name;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,653評論 19 139
  • 什么是注解 注解對于開發(fā)人員來講既熟悉又陌生,熟悉是因為只要你是做開發(fā),都會用到注解(常見的@Override);...
    張明云閱讀 26,004評論 6 154
  • 最近,北京打工的肓兒嫂范雨素火了。因為一篇感人至深,讓千萬人為之動容的文章。 看她的照片一一 樸素,平凡,簡單,像...
    般若秋雪閱讀 654評論 1 11
  • Unix指令 //在輸入文件明時,按tab鍵可以提示輸出所要的文件名 open +文件名 ——打開當前路徑的文件 ...
    CharlesAn閱讀 481評論 0 1
  • 第一招 每天早上一上班,在心里喊:我最重要的KPI是XXX 你每天打開電腦,面對一百多封未讀郵件, 你每天接觸十來...
    一刀職場閱讀 365評論 0 0

友情鏈接更多精彩內(nèi)容