Spring自定義注解實(shí)現(xiàn)請(qǐng)求權(quán)限的攔截

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

image.png

各注解:
@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


image.png

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


image.png

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

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

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

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

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