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