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(
切面
): 是切入點和通知(引介)的結合。