java註解通俗易懂系列教程一之定義和使用

1.java註解定義

定義:Annotation(註解)就是Java提供了一種元程序中的元素關聯任何信息和着任何元數據(metadata)的途徑和方法。Annotion(註解)是一個接口,程序可以通過反射來獲取指定程序元素的Annotion對象,然後通過Annotion對象來獲取註解裏面的元數據。

簡單點來說:Java 註解(Annotation)又稱 Java 標註,是 JDK5.0 引入的一種註釋機制。

通俗來講Java 註解(Annotation)1.可以做的事情:根據屬性字段保存相應的內容,可以放到類,方法等地方的標識。2.可以得到的信息:屬性字段保存的內容,放置的地方(類,方法等)。類比幾個例子:註解就是指示牌,路標,燈塔,可以提供一些信息但是本身又沒主動做什麼操作

疑問:講到這個地方用過但是不理解原理的同學就會有疑問:按這個解釋註解就是一個保存信息的標註,只展示了一些信息,什麼都沒做啊。那跟平時使用的註解比如@SpringBootApplication,@MapperScan,@RestController等理解不太一樣,因爲這些註解肯定不只是展示信息了,也做了一些處理邏輯,這個邏輯是在哪裏寫的?

所以寫自定義註解需要提前規定和知道註解的使用位置,這樣才能正確生效。在規定的位置內,判斷如果使用了這個自定義註解,利用註解屬性提供的信息,通過AOP和反射對使用註解的位置進行邏輯處理。(不僅僅是使用aop,只要可以在註解執行之前捕捉到進行處理,都可以)

2.註解怎麼使用

(1)比如:使用@RequestMapping展示

(2)查看@RequestMapping的註解源碼,查看註解可以用在什麼地方@Target,註解存在的生命週期:@Retention

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping  是另外一個自定義註解和這個組合了,在此不做討論,有興趣看後面教程

(3)最上面四個註解是用來寫這個註解的使用規則,使用位置@Target({ElementType.METHOD, ElementType.TYPE}爲:METHOD 在【方法】上使用,TYPE 在【類、接口、註解】上使用 註解具體詳解如下:

(4)其中target在java1.8的時候還引入兩個屬性上圖沒有

  • TYPE_PARAMETER 在【類型參數】上使用 Java 1.8 引入
  • TYPE_USE 在【任何聲明類型的地方】上使用 Java 1.8 引入)

(5)然後查看註解定義的屬性怎麼使用,比如這裏的name屬性,這個需要查看調用這個註解前後都執行了什麼邏輯。

(6)具體一個註解怎麼使用都執行了什麼邏輯,兩方面:1.文檔講解(這個比較容易小白也會)2.通過查看源碼哪裏引用這個註解了,實現的什麼業務邏輯來分析(這個對於一般剛入門的比較難),我使用的eclipse快捷鍵在註解上ctrl+G或者註解上右鍵Find Usages來查看

總結註解使用都是直接@註解名在具體的方法,類等上面,特別簡單。使用之前查看@target定義的使用位置,通過源碼和文檔查看註解的使用邏輯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章