国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【好好面試】你必須要懂的Spring-Aop

honhon / 1794人閱讀

摘要:干貨點此處是好好面試系列文的第篇文章。而這也是出現的原因,沒錯,就是被設計出來彌補短板的。運行結果如下運行結果可想而知,的通過驗證,的失敗。

【干貨點】此處是【好好面試】系列文的第10篇文章。看完該篇文章,你就可以了解Spring中Aop的相關使用和原理,并且能夠輕松解答Aop相關的面試問題。

在實際研發中,Spring是我們經常會使用的框架,畢竟它們太火了,也因此Spring相關的知識點也是面試必問點,今天我們就大話Aop。
特地在周末推文,因為該篇文章閱讀起來還是比較輕松詼諧的,當然了,更主要的是周末的我也在充電學習,希望有追求的朋友們也盡量不要放過周末時間,適當充電,為了走上人生巔峰,迎娶白富美。【話說有沒有白富美介紹(o???)】

接下來,直接進入正文。

為什么要有aop

我們都知道Java是一種面向對象編程【也就是OOP】的語言,不得不說面向對象編程是一種及其優秀的設計,但是任何語言都無法十全十美,對于OOP語言來說,當需要為部分對象引入公共部分的時候,OOP就會引入大量的重復代碼【這些代碼我們可以稱之為橫切代碼】。而這也是Aop出現的原因,沒錯,Aop就是被設計出來彌補OOP短板的。Aop便是將這些橫切代碼封裝到一個可重用模塊中,繼而降低模塊間的耦合度,這樣也有利于后面維護。

Aop是什么東西

學過Spring的都知道,Spring內比較核心的功能便是Ioc和Aop,Ioc的主要作用是應用對象之間的解耦,而Aop則可以實現橫切代碼【如權限、日志等】與他們綁定的對象之間的解耦,舉個淺顯易懂的小栗子,在用戶調用很多接口的地方,我們都需要做權限認證,判斷用戶是否有調用該接口的權限,如果每個接口都要自己去做類似的處理,未免有點sb了,也不夠裝x,因此Aop就可以派上用場了,將這些處理的代碼放到切片中,定義一下切片、連接點和通知,刷刷刷跑起來就ojbk了。

想要了解Aop,就要先理解以下幾個術語,如PointCut、Advice、JoinPoint。接下來盡量用白話文描述下。

PointCut【切點】
其實切點的概念很好理解,你想要去切某個東西之前總得先知道要在哪里切入是吧,切點格式如下:execution( com.nuofankj.springdemo.aop.Service.*(..))
可以看出來,格式使用了正常表達式來定義那個范圍內的類、那些接口會被當成切點,簡單明了。

Advice
Advice行內很多人都定義成了通知,但是我總覺得有點勉強。所謂的Advice其實就是定義了Aop何時被調用,確實有種通知的感覺,何時調用其實也不過以下幾種:

Before 在方法被調用之前調用

After 在方法完成之后調用

After-returning 在方法成功執行之后調用

After-throwing 在方法拋出異常之后調用

Around 在被通知的方法調用之前和調用之后調用

JoinPoint【連接點】
JoinPoint連接點,其實很好理解,上面又有通知、又有切點,那和具體業務的連接點又是什么呢?沒錯,其實就是對應業務的方法對象,因為我們在橫切代碼中是有可能需要用到具體方法中的具體數據的,而連接點便可以做到這一點。

給出一個Aop在實際中的應用場景

先給出兩個業務內的接口,一個是聊天,一個是購買東西


接下來該給出說了那么久的切片了

可以從中看到PointCut【切點】是

execution( com.nuofankj.springdemo.aop.Service.*(..))

Advice是

Before

JoinPoint【連接點】是

MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();

代碼淺顯易懂,其實就是將ChatService和BuyService里邊給userId做權限校驗的邏輯抽出來做成切片。

那么如何拿到具體業務方法內的具體參數呢?
這里是定義了一個新的注解

作用可以直接看注釋,使用地方如下

可以看到對應接口使用了AuthPermission的注解,而取出的地方在于

是的,這樣便可以取出來對應的接口傳遞的userId具體是什么了,而校驗邏輯可以自己處理。

送佛送到西,不對,擼碼擼整套,接下來給出運行的主類

可以看到,上面有一個接口傳遞的userId是1,另一個是123,而上面權限認證只有1才說通過,否則會拋出異常。

運行結果如下

運行結果可想而知,1的通過驗證,123的失敗。

Aop的原理解析

關于原理解析,由于大家都不喜歡看篇幅太長的文章,因此打算拆分成兩篇進行,下篇文章會對Aop的原理和設計思想進行解析,有興趣的朋友可以關注我一波。

公眾號主營:服務端編程相關技術解說,具體可以看歷史文章。

公眾號副業:各種陪聊吹水,包括技術、就業、人生經歷、大學生活、內推等等。

歡迎關注,一起侃大山

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75201.html

相關文章

  • 好好面試】學完Aop,連動態代理的原理都不懂?

    摘要:總結動態代理的相關原理已經講解完畢,接下來讓我們回答以下幾個思考題。 【干貨點】 此處是【好好面試】系列文的第12篇文章。文章目標主要是通過原理剖析的方式解答Aop動態代理的面試熱點問題,通過一步步提出問題和了解原理的方式,我們可以記得更深更牢,進而解決被面試官卡住喉嚨的情況。問題如下 SpringBoot默認代理類型是什么 為什么不用靜態代理 JDK動態代理原理 CGLIB動態代理...

    Keven 評論0 收藏0
  • 學Aop?看這篇文章就夠了!!!

    摘要:又是什么其實就是一種實現動態代理的技術,利用了開源包,先將代理對象類的文件加載進來,之后通過修改其字節碼并且生成子類。 在實際研發中,Spring是我們經常會使用的框架,畢竟它們太火了,也因此Spring相關的知識點也是面試必問點,今天我們就大話Aop。特地在周末推文,因為該篇文章閱讀起來還是比較輕松詼諧的,當然了,更主要的是周末的我也在充電學習,希望有追求的朋友們也盡量不要放過周末時...

    boredream 評論0 收藏0
  • 寫給初入門/半路出家的前端er

    摘要:半路出家的前端程序員應該不在少數,我也是其中之一。年,馮馮同事兼師兄看我寫太費勁,跟我說對面樓在找,問我要不要學,說出來可能有點丟人,但是在那之前,我真得不知道什么是,什么是。 半路出家的前端程序員應該不在少數,我也是其中之一。 為何會走向前端 非計算機專業的我,畢業之后,就職于一家電力行業公司,做過設備調試、部門助理、測試,也寫過一段時間的QT,那三年的時間,最難過的不是工作忙不忙,...

    Cc_2011 評論0 收藏0
  • 面試篇】寒冬求職之你必須要懂的Web安全

    摘要:禁止內聯腳本執行規則較嚴格,目前發現使用。典型的攻擊流程受害者登錄站點,并保留了登錄憑證。站點接收到請求后,對請求進行驗證,并確認是受害者的憑證,誤以為是無辜的受害者發送的請求。攻擊完成,攻擊者在受害者不知情的情況下,冒充受害者完成了攻擊。 隨著互聯網的發展,各種Web應用變得越來越復雜,滿足了用戶的各種需求的同時,各種網絡安全問題也接踵而至。作為前端工程師的我們也逃不開這個問題,今天一起...

    yeyan1996 評論0 收藏0
  • 面試篇】寒冬求職之你必須要懂的Web安全

    摘要:禁止內聯腳本執行規則較嚴格,目前發現使用。典型的攻擊流程受害者登錄站點,并保留了登錄憑證。站點接收到請求后,對請求進行驗證,并確認是受害者的憑證,誤以為是無辜的受害者發送的請求。攻擊完成,攻擊者在受害者不知情的情況下,冒充受害者完成了攻擊。 隨著互聯網的發展,各種Web應用變得越來越復雜,滿足了用戶的各種需求的同時,各種網絡安全問題也接踵而至。作為前端工程師的我們也逃不開這個問題,今天...

    charles_paul 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<