天天看點

SpringBoot:自定義注解

SpringBoot:自定義注解

    • 一、一個簡單的自定義注解的例子
      • @Retention
      • @Target
    • 二、自定義的注解如何使用?

記得有一次面試,被問到過是否自定義過注解,但是沒有用過,隻能弱弱地說一句沒有,在後面,看公司的架構源碼的時候,有看到了一些注解是百度搜不到的,點進去一看才知道是自定義的注解,這一來二去,想着還是學學自定義注解。

一、一個簡單的自定義注解的例子

簡單來說自定義注解就是一個接口,使用一些元注解來修飾。

比如下面的例子:

SpringBoot:自定義注解

@Retention

其中@Retention 注解的意思就是說你什麼時候使用該注解。

SpringBoot:自定義注解

下面是枚舉類RetentionPolicy的枚舉值。

SpringBoot:自定義注解

具體的參數有

  • SOURCE: 在源碼及别保留,編譯時就會被忽略
  • CLASS: 編譯時被保留,在class檔案中存在,但是jvm将會忽略。
  • RUNTIME:被jvm保留,他們在運作是被jvm或其他使用反射機制的代碼所讀取和使用

@Target

Target 就是說作用在什麼地方

這裡是@Target注解的源代碼,裡面有一個枚舉類型的value值,具體的值如下:

SpringBoot:自定義注解
SpringBoot:自定義注解
  • TYPE:接口、類、枚舉、注解
  • FIFLE:字段、枚舉的常量
  • METHOD:方法
  • PARAMENTER:方法參數
  • CONSTRUCTOR 構造函數
  • LOCAL_VARIABLE 局部變量

二、自定義的注解如何使用?

這個如何使用就得根據自己的業務來判斷了,可以結合aop來做日志管理,也可以結合攔截器來計數,就是說 有這個注解count加一等等。

我這裡就舉一個 簡單的例子,擷取到方法上的注解的資訊。

這裡我還是使用最上面的

WebLog

這個注解,然後我定義了一個WebLogAnnotation的類,類裡面使用了webLog注解

SpringBoot:自定義注解

最後在測試類裡面寫代碼測試,

SpringBoot:自定義注解

繼續閱讀