您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何分析Spring AOP設計與原理,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
java程序執行——方法調用
在學java基礎我們就知道,一個java程序總是從main方法開始運行的,當開始運行時JVM會創建一個主線程,主線程就以main方法為入口開始執行代碼。從線程棧的角度來看,JVM處理Java程序的基本單位是方法調用(宏觀角度)。在我們使用面向對象解決問題時,我們考慮的是如何按照執行順序通過方法調用來實現我們的業務邏輯。如果從虛擬機線程棧的角度考慮Java程序執行的話,那么,你會發現,整個程序運行的過程就是方法調用的過程。
我們將上述的線程棧里的方法調用按照執行流排列,會有如下類似的圖:
基于程序運行的先后順序,我們可以將方法的調用排成一條線。而每個方法調用則可以看成這條線上的一個節點。這個節點在AOP的術語中,被稱為Join Point,即連接點。一個Java程序的運行的過程,就是若干個連接點連接起來依次執行的過程。
AOP(Aspect Oriented Programming)則是從另外一個角度來考慮整個程序的,AOP將每一個方法調用,即連接點作為編程的入口,針對方法調用進行編程。從執行的邏輯上來看,相當于在之前縱向的按照時間軸執行的程序橫向切入。相當于將之前的程序橫向切割成若干的面,即Aspect.每個面被稱為切面。
因為切面本質上是每一個方法調用,選擇切面的過程實際上就是選擇方法的過程。那么,被選擇的切面(Aspect)在AOP術語里被稱為切入點(Point Cut). 切入點實際上也是從所有的連接點(Join point)挑選自己感興趣的連接點的過程。
既然AOP是對方法調用進行的編程,那么問題來了,AOP如何捕獲方法調用的呢?也就是說,AOP怎么知道當前運行到了哪個方法了呢?為了弄清這個問題,你就不得不了解設計模式中的代理模式了!什么是代理模式?舉例:真正的實例對象就先對迪麗熱巴,迪麗熱巴沒火的時候人家讓她去跳舞,她自己就去了,就相當于之前沒有代理對象的時候,現在有了代理對象就相當于她有了經紀人,想讓迪麗熱巴跳舞就得先聯系經紀人。我們假設在我們的Java代碼里,都為實例對象通過代理模式創建了代理對象,訪問這些實例對象必須要通過代理,那么,加入了proxy對象(代理角色)的Java程序執行流會變得稍微復雜起來。
既然Spring代理層可以察覺到你所做的每一次對實例對象的方法調用,那么,Spring就有機會在這個代理的過程中插入Spring的自己的業務代碼。
關于如何分析Spring AOP設計與原理就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。