2019-01-07

title: Spring aop理解幫助文檔

程序員小白一只,現(xiàn)在還在學(xué)習(xí)中,關(guān)于AOP的一些東西有自己的理解,暫時記錄一下=0=

### 1.AOP面向切面編程的術(shù)語解釋

AOP實際上也就是Spring框架為我們實現(xiàn)了動態(tài)代理;在不更改源代碼的情況下對方法進行增強;所以也就分成了被增強類與增強類兩個類,我們可以把這兩個抽象的概念想象成兩條單鏈的DNA,來具體化,方便理解;

* 以下是針對術(shù)語的解釋;

Joinpoint:(連接點)被代理的對象所有的方法都是連接點,

(假如,我們把兩個對象想象成兩條單鏈DNA,被增強類上的所有方法(被配對的單鏈DNA上面的所有連接口就是連接點))

Pointcut:(切入點)被代理對象所有被增強的方法就是切入點

(假如,我們把兩個對象想象成兩條單鏈DNA,兩個DNA配對的過程中,完成配對的連接點就是切入點)

Advice:(通知/增強)就是增強的方法(假如,我們把兩個對象想象成兩條單鏈DNA,把方法想象成DNA上的節(jié)點,那么去增強其他單鏈DNA的單鏈DNA上的節(jié)點就是增強)

Target:目標(biāo)對象,(假如,我們把兩個想象成兩條單鏈DNA,被配對的那個單鏈DNA就是目標(biāo)對象)

Weaving:(織入)把增強應(yīng)用到目標(biāo)對象的過程;(假如,我們把兩個想象成兩條單鏈DNA,兩個DNA配對的過程就是織入)

Proxy:代理對象,一個對象被代理成功之后返回的對象(假如,我們把兩個想象成兩條單鏈DNA,配對成功之后的雙鏈DNA就是Proxy)

Aspect:就是切入點和通知的結(jié)合面(假如,我們把兩個想象成兩條單鏈DNA,兩個DNA配對完成之后的DNA鏈中間的面,就是切面)

* 針對配置文件中配置aop的理解

1.把通知bean也交給spring來管理(生成一條用于增強的DNA鏈)

2.aop:config便是開始配置aop的配置(開始配對)

3.aop:aspect 表明配置切面(生成切面)

id:給切面提供一個唯一的標(biāo)識(表示切面的編號)

ref:指定通知類bean的id(增強的DNA鏈的編號)

order:連接的執(zhí)行順序;默認(rèn)值是Interage的最大值,一般不指定

4.在.aop:aspect的標(biāo)簽內(nèi)部使用對應(yīng)標(biāo)簽來配置通知的類型

我們現(xiàn)在讓通知類在被增強的方法前執(zhí)行,所以是前置通知

aop:before表示的是配置前置通知(旋轉(zhuǎn)增強的DNA鏈的增強方法,配置執(zhí)行順序)

method屬性 就是制定通知類中哪個方法是前置通知(指定用增強DNA中哪個方法(節(jié)點)去增強)

pointcut屬性:用于指定切入點表達式,該表帶是的含義就是指的是對被代理層的哪些方法增強(指定去增強目標(biāo)DNA鏈的哪個方法(節(jié)點))

切入點表達式的寫法:

關(guān)鍵字:execution(表達式)

* 表達式的寫法:

表達式:

訪問修飾符 返回值 包名.包名....類名.方法名(參數(shù)列表)

? ? ? ? ? ? ? ? 訪問修飾符可以省略

? ? ? ? ? ? ? ? ? ? void com.itheima.service.impl.AccountServiceImpl.saveAccount()

? ? ? ? ? ? ? ? 返回值可以使用通配符,表示任意返回值

? ? ? ? ? ? ? ? ? ? * com.itheima.service.impl.AccountServiceImpl.saveAccount()

? ? ? ? ? ? ? ? 包名可以使用通配符,表示任意包。但是有幾級包,就需要寫幾個*.

? ? ? ? ? ? ? ? ? ? * *.*.*.*.AccountServiceImpl.saveAccount())

? ? ? ? ? ? ? ? 包名可以使用..表示當(dāng)前包及其子包

? ? ? ? ? ? ? ? ? ? * *..AccountServiceImpl.saveAccount()

? ? ? ? ? ? ? ? 類名和方法名都可以使用*來實現(xiàn)通配

? ? ? ? ? ? ? ? ? ? * *..*.*()

? ? ? ? ? ? ? ? 參數(shù)列表:

? ? ? ? ? ? ? ? ? ? 可以直接寫數(shù)據(jù)類型:

? ? ? ? ? ? ? ? ? ? ? ? 基本類型直接寫名稱? ? ? ? ? int

? ? ? ? ? ? ? ? ? ? ? ? 引用類型寫包名.類名的方式? java.lang.String

? ? ? ? ? ? ? ? ? ? 可以使用通配符表示任意類型,但是必須有參數(shù)

? ? ? ? ? ? ? ? ? ? 可以使用..表示有無參數(shù)均可,有參數(shù)可以是任意類型

? ? ? ? ? ? ? ? 全通配寫法:

? ? ? ? ? ? ? ? ? ? * *..*.*(..)

? ? ? ? ? ? ? ? 實際開發(fā)中切入點表達式的通常寫法:

? ? ? ? ? ? ? ? ? ? 切到業(yè)務(wù)層實現(xiàn)類下的所有方法

? ? ? ? ? ? ? ? ? ? ? ? *** com.itheima.service.impl.*.*(..)**

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這一次再去婦幼,家里已經(jīng)沒有大咪了。 掛了下午2點-2點半的號,2點左右出門,順便打印了上次抽血的結(jié)果。護士臺報到...
    本命小妞閱讀 413評論 0 0
  • 2012年9月,在杭州,我失業(yè),帶著僅剩下的3萬元存款,去川北藏區(qū)徒步,回來參加了一個課程,交完學(xué)費,剩下1000...
    建琪覺醒閱讀 1,426評論 4 49
  • 不知道是從什么時候起,我對畫畫有著一種執(zhí)念,也許是因為高二時那個畫水彩的男生給我留下的印象,他雙手滿是油彩,作勢要...
    阮阮小姐閱讀 280評論 0 0
  • 閱讀和寫作 閱讀不仔細(xì),寫作沒信心。閱讀目標(biāo)很廣泛,寫作目標(biāo)很具體。帶著寫作目標(biāo)進行主動、有目的的閱讀。不會閱讀的...
    念即起行閱讀 292評論 0 0

友情鏈接更多精彩內(nèi)容