日常開發(fā)過程中,面臨著對(duì)前臺(tái)數(shù)據(jù)的檢查的日志處理中?;蛭覀冃枰獙?duì)某個(gè)請(qǐng)求進(jìn)行放行和攔截,就需要用到我們的自定義注解來實(shí)現(xiàn)攔截的功能。

各注解:
@Retention 作用是定義被它所注解的注解保留多久,一共有三種策略,定義在RetentionPolicy枚舉中:
1.SOURCE 被編譯器忽略
2.CLASS 注解將會(huì)被保留在Class文件中,但在運(yùn)行時(shí)并不會(huì)被VM保留。這是默認(rèn)行為,所有沒有用Retention注解的注解,都會(huì)采用這種策略。
3.RUNTIME 保留至運(yùn)行時(shí)。所以我們可以通過反射去獲取注解信息。
@Documented 注解表明這個(gè)注解應(yīng)該被 javadoc工具記錄. 默認(rèn)情況下,javadoc是不包括注解的. 但如果聲明注解時(shí)指定了 Documented,則它會(huì)被 javadoc 之類的工具處理
@Target 性質(zhì)和Rentention一樣,都是注解類的屬性,表示注解類應(yīng)該在什么位置,對(duì)那一塊的數(shù)據(jù)有效。例如,@Target(ElementType.METHOD)
Target內(nèi)部的值使用枚舉ElementType表示,表示的主要位置有:注解、構(gòu)造方法、屬性、局部變量、函數(shù)、包、參數(shù)和類(默認(rèn)值)。多個(gè)位置使用數(shù)組,例如,@Target({ElementType.METHOD,ElementType.TYPE})。
類、接口、枚舉、注解這一類事物用TYPE表示,Class的父類,JDK1.5的新特性。
下面是日常開發(fā)的一個(gè)針對(duì)接口訪問請(qǐng)求是否攔截的自定義注解功能:
第一步:自定義注解 UserAuth

第二步:新建攔截請(qǐng)求邏輯的攔截器

第三步:執(zhí)行攔截器配置中將此攔截器添加進(jìn)去

此處需要注意,當(dāng)注解上沒有特定method和type的時(shí)候。
在如果,在具體業(yè)務(wù)中,需要將注解加在類上和方法上時(shí),需要根據(jù)不同的method/type去判斷下。