Spring AOP 實(shí)戰(zhàn)
看了上面這么多的理論知識, 不知道大家有沒有覺得枯燥哈. 不過不要急, 俗話說理論是實(shí)踐的基礎(chǔ), 對 Spring AOP 有了基本的理論認(rèn)識后, 我們來看一下下面幾個具體的例子吧.
下面的幾個例子是我在工作中所遇見的比較常用的 Spring AOP 的使用場景, 我精簡了很多有干擾我們學(xué)習(xí)的注意力的細(xì)枝末節(jié), 以力求整個例子的簡潔性.
下面幾個 Demo 的源碼都可以在我的 Github 上下載到.
HTTP 接口鑒權(quán)
首先讓我們來想象一下如下場景: 我們需要提供的 HTTP RESTful 服務(wù), 這個服務(wù)會提供一些比較敏感的信息, 因此對于某些接口的調(diào)用會進(jìn)行調(diào)用方權(quán)限的校驗(yàn), 而某些不太敏感的接口則不設(shè)置權(quán)限, 或所需要的權(quán)限比較低(例如某些監(jiān)控接口, 服務(wù)狀態(tài)接口等).
實(shí)現(xiàn)這樣的需求的方法有很多, 例如我們可以在每個 HTTP 接口方法中對服務(wù)請求的調(diào)用方進(jìn)行權(quán)限的檢查, 當(dāng)調(diào)用方權(quán)限不符時, 方法返回錯誤. 當(dāng)然這樣做并無不可, 不過如果我們的 api 接口很多, 每個接口都進(jìn)行這樣的判斷, 無疑有很多冗余的代碼, 并且很有可能有某個粗心的家伙忘記了對調(diào)用者的權(quán)限進(jìn)行驗(yàn)證, 這樣就會造成潛在的 bug.
那么除了上面的所說的方法外, 還有沒有別的比較優(yōu)雅的方式來實(shí)現(xiàn)呢? 當(dāng)然有啦, 不然我在這啰嗦半天干嘛呢, 它就是我們今天的主角:
網(wǎng)友評論