Spring review--AOP原理

ZeroWM發表於2016-08-08



  AOP面向切面的程式設計是Spring的核心之一,全稱是Aspect Oriented Programming。

  圖中的箭頭代表我們的程式,程式是自上而下執行的。程式中的一些業務,例如檢查安全性,日誌服務,這些都是獨立的服務,跟業務邏輯無關,遍佈在我們的處理流程中。

  我們可以採取Aop的方式,把這些獨立的服務進行抽象,獨立處理,這樣會降低業務邏輯之間的耦合。


  下面是對這些引數的解釋:

CrossCutting Concern——橫切性的關注點,它會遍佈在系統的處理流程中。

Aspect——對橫切性關注點的模組化。

Advice——對橫切性關注點的具體實現。

Pointcut——它定義了Advice應用到那些JoinPoint上,對Spring來說是方法的呼叫。

JoinPoint——Advice在應用程式上執行的點或時機,Spring只支援方法的JoinPoint。這個點也可以使屬性修改,如Aspecj可以支援

Weave——將Advice應用到Target Object上的過程叫織入,Spring支援的是動態織入。

TargetObject——advice被應用的物件。

Proxy——Spring Aop預設使用JDK的動態代理,它的代理是執行時建立,也可以使用CGLIB代理。

Introduction——可以動態的為類新增方法。


  解釋一下圖中的例子:我們在執行所有的新增方法前,需要檢查系統的安全性。檢測系統安全性就是獨立的服務。它就是Corss Cutting concern,當這個功能模組化後,就叫做Aspect。圖中的SecurityHandler就是Aspect的具體實現,稱為Advice。Advice又分為Before Advice、After Advice和Throw Advice。我們要採用AOP的思想來處理這個過程,要明確一個切入點Pointcut,就是在觸發什麼事件的時候JoinPoint執行什麼操作(Advice),在執行前還是執行後切入(Before or After)。




相關文章