SpringBoot:自定義注解
-
- 一、一個簡單的自定義注解的例子
-
- @Retention
- @Target
- 二、自定義的注解如何使用?
記得有一次面試,被問到過是否自定義過注解,但是沒有用過,隻能弱弱地說一句沒有,在後面,看公司的架構源碼的時候,有看到了一些注解是百度搜不到的,點進去一看才知道是自定義的注解,這一來二去,想着還是學學自定義注解。
一、一個簡單的自定義注解的例子
簡單來說自定義注解就是一個接口,使用一些元注解來修飾。
比如下面的例子:
@Retention
其中@Retention 注解的意思就是說你什麼時候使用該注解。
下面是枚舉類RetentionPolicy的枚舉值。
具體的參數有
- SOURCE: 在源碼及别保留,編譯時就會被忽略
- CLASS: 編譯時被保留,在class檔案中存在,但是jvm将會忽略。
- RUNTIME:被jvm保留,他們在運作是被jvm或其他使用反射機制的代碼所讀取和使用
@Target
Target 就是說作用在什麼地方
這裡是@Target注解的源代碼,裡面有一個枚舉類型的value值,具體的值如下:
- TYPE:接口、類、枚舉、注解
- FIFLE:字段、枚舉的常量
- METHOD:方法
- PARAMENTER:方法參數
- CONSTRUCTOR 構造函數
- LOCAL_VARIABLE 局部變量
二、自定義的注解如何使用?
這個如何使用就得根據自己的業務來判斷了,可以結合aop來做日志管理,也可以結合攔截器來計數,就是說 有這個注解count加一等等。
我這裡就舉一個 簡單的例子,擷取到方法上的注解的資訊。
這裡我還是使用最上面的
WebLog
這個注解,然後我定義了一個WebLogAnnotation的類,類裡面使用了webLog注解
最後在測試類裡面寫代碼測試,