Spring的AOP概述

Spring的一個非常重要的功能便是AOP

AOP全稱爲Aspect Oriented Programming

即:面向切面編程

AOP的功能簡單來說就是將程序中的重複代碼抽取出來,在需要執行的時候通過動態代理的方式,在不修改代碼的基礎上,實現對功能增強,提高程序的可用性,同時也能大大提高開發效率

AOP的作用:在程序運行過程中,在不修改源碼的基礎上實現功能增強

使用AOP的好處:

減少重複代碼

提高開發效率

後期便於維護

 

AOP的相關術語

Joinpoint( 連接點 ):
所謂連接點是指那些被攔截到的點。在 spring , 這些點指的是方法 , 因爲 spring 只支持方法類型的 連接點。
簡單來說,接口中定義的方法即連接點
Pointcut( 切入點 ):
所謂切入點是指我們要對哪些 Joinpoint 進行攔截的定義。
可以簡單的理解爲那些被動態代理增強的方法
Advice( 通知 / 增強 ):
所謂通知是指攔截到 Joinpoint 之後所要做的事情就是通知。
通知的類型:前置通知 , 後置通知 , 異常通知 , 最終通知 , 環繞通知。
這裏用一張圖能更直觀的看到不同通知所代表的意義
Introduction( 引介 ):
引介是一種特殊的通知在不修改類代碼的前提下 , Introduction 可以在運行期爲類動態地添加一些方 法或 Field
Target( 目標對象 ):
代理的目標對象。
Weaving( 織入 ):
是指把增強應用到目標對象來創建新的代理對象的過程。 spring 採用動態代理織入,而 AspectJ 採用編譯期織入和類裝載期織入。
Proxy (代理) : 一個類被 AOP 織入增強後,就產生一個結果代理類。
Aspect( 切面 ): 是切入點和通知(引介)的結合。