目錄

Spring AOP 實(shí)戰(zhàn)
HTTP 接口鑒權(quán)
方法調(diào)用日志
方法耗時(shí)統(tǒng)計(jì)
總結(jié)
End.

接上篇 徹底征服 Spring AOP 之 理論篇

Spring AOP 實(shí)戰(zhàn)

看了上面這么多的理論知識(shí), 不知道大家有沒有覺得枯燥哈. 不過不要急, 俗話說理論是實(shí)踐的基礎(chǔ), 對(duì) Spring AOP 有了基本的理論認(rèn)識(shí)后, 我們來看一下下面幾個(gè)具體的例子吧.
下面的幾個(gè)例子是我在工作中所遇見的比較常用的 Spring AOP 的使用場(chǎng)景, 我精簡(jiǎn)了很多有干擾我們學(xué)習(xí)的注意力的細(xì)枝末節(jié), 以力求整個(gè)例子的簡(jiǎn)潔性.

下面幾個(gè) Demo 的源碼都可以在我的 Github 上下載到.

HTTP 接口鑒權(quán)

首先讓我們來想象一下如下場(chǎng)景: 我們需要提供的 HTTP RESTful 服務(wù), 這個(gè)服務(wù)會(huì)提供一些比較敏感的信息, 因此對(duì)于某些接口的調(diào)用會(huì)進(jìn)行調(diào)用方權(quán)限的校驗(yàn), 而某些不太敏感的接口則不設(shè)置權(quán)限, 或所需要的權(quán)限比較低(例如某些監(jiān)控接口, 服務(wù)狀態(tài)接口等).
實(shí)現(xiàn)這樣的需求的方法有很多, 例如我們可以在每個(gè) HTTP 接口方法中對(duì)服務(wù)請(qǐng)求的調(diào)用方進(jìn)行權(quán)限的檢查, 當(dāng)調(diào)用方權(quán)限不符時(shí), 方法返回錯(cuò)誤. 當(dāng)然這樣做并無不可, 不過如果我們的 api 接口很多, 每個(gè)接口都進(jìn)行這樣的判斷, 無疑有很多冗余的代碼, 并且很有可能有某個(gè)粗心的家伙忘記了對(duì)調(diào)用者的權(quán)限進(jìn)行驗(yàn)證, 這樣就會(huì)造成潛在的 bug.
那么除了上面的所說的方法外, 還有沒有別的比較優(yōu)雅的方式來實(shí)現(xiàn)呢? 當(dāng)然有啦, 不然我在這啰嗦半天干嘛呢, 它就是我們今天的主角: AOP.

讓我們來提煉一下我們的需求: