欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

面向切面的Spring通過(guò)切點(diǎn)來(lái)選擇連接點(diǎn)實(shí)例詳解

 更新時(shí)間:2023年10月23日 09:34:36   作者:胡楊  
這篇文章主要為大家介紹了面向切面的Spring通過(guò)切點(diǎn)來(lái)選擇連接點(diǎn)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

導(dǎo)讀

與大多數(shù)技術(shù)一樣,AOP已經(jīng)形成了自己的術(shù)語(yǔ)。通知和切點(diǎn)是切面的最基本元素。

在Spring AOP中,要使用AspectJ的切點(diǎn)表達(dá)式語(yǔ)言來(lái)定義切點(diǎn)。

關(guān)于Spring AOP的AspectJ切點(diǎn),最重要的一點(diǎn)就是Spring僅支持 AspectJ切點(diǎn)指示器 (pointcut designator ) 的一個(gè)子集。

圖4.1

當(dāng)我們查看如上所展示的這些Spring支持的指示器時(shí),注意只有execution指示器是實(shí)際執(zhí)行匹配的,而其他的指示器都是用來(lái) 限制匹配的。這說(shuō)明execution指示器是我們?cè)诰帉?xiě)切點(diǎn)定義時(shí)最 主要使用的指示器。在此基礎(chǔ)上,我們使用其他指示器來(lái)限制所匹配的切點(diǎn)。

編寫(xiě)切點(diǎn)

為了闡述Spring中的切面,我們需要有個(gè)主題來(lái)定義切面的切點(diǎn)。為 此,我們定義一個(gè)Performance接口:

package com.spring.point;

/**
 * @author huyang
 */
public interface Performance {
    public void perform();
}

Performance可以代表任何類(lèi)型的現(xiàn)場(chǎng)表演,如舞臺(tái)劇、電影或音 樂(lè)會(huì)。假設(shè)我們想編寫(xiě)Performance的perform ()方法觸發(fā)的通 知。

圖4.4展現(xiàn)了一個(gè)切點(diǎn)表達(dá)式,這個(gè)表達(dá)式能夠設(shè)置當(dāng)perform()方 法執(zhí)行時(shí)觸發(fā)通知的調(diào)用。

execution(*concert.Performance.perform(...))

小猿解釋這個(gè)語(yǔ)句,即攔截目標(biāo)方法執(zhí)行切面規(guī)則。

圖4.4

使用AspectJ切點(diǎn)表達(dá)式來(lái)選擇Performance 的perform()方法

我們使用execution()指示器選擇Performance的perform()方 法。

方法表達(dá)式以“*”號(hào)開(kāi)始,表明了我們不關(guān)心方法返回值的類(lèi)型。

然后,我們指定了全限定類(lèi)名和方法名。

對(duì)于方法參數(shù)列表,我們使用兩個(gè)點(diǎn)號(hào) ( ..) 表明切點(diǎn)要選擇任意的perform ()方法,無(wú)論該方法的入?yún)⑹鞘裁础?/p>

現(xiàn)在假設(shè)我們需要配置的切點(diǎn)僅匹配concert包。在此場(chǎng)景下,可 以使用within ()指示器來(lái)限制匹配,如圖4.5所示。

圖4.5

使用within()指示器限制切點(diǎn)范圍

對(duì)圖4.5所含的元素進(jìn)行講解:

在切點(diǎn)中選擇bean

除了表4. 1所列的指示器外,Spring還引入了一個(gè)新的bean()指示 器,它允許我們?cè)谇悬c(diǎn)表達(dá)式中使用bean的ID來(lái)標(biāo)識(shí)bean。bean ()

使用bean ID或bean名稱(chēng)作為參數(shù)來(lái)限制切點(diǎn)只匹配特定的bean。 例如,考慮如下的切點(diǎn):

execution(* concert.Performance.perform()) and bean (*woodstock)

在這里,我們希望在執(zhí)行Performance的perform()方法時(shí)應(yīng)用通 知,但限定bean的ID為woodstock。

在某些場(chǎng)景下,限定切點(diǎn)為指定的bean或許很有意義,但我們還可以 使用非操作為除了特定ID以外的其他bean應(yīng)用通知:

execution(* concert.Performance.perform()) and !bean (`woodstock`)

在此場(chǎng)景下,切面的通知會(huì)被編織到所有ID不為woodstock的bean 中。

現(xiàn)在,我們已經(jīng)講解了編寫(xiě)切點(diǎn)的基礎(chǔ)知識(shí),讓我們?cè)倭私庖幌氯绾?編寫(xiě)通知和使用這些切點(diǎn)聲明切面

以上就是面向切面的Spring通過(guò)切點(diǎn)來(lái)選擇連接點(diǎn)實(shí)例詳解的詳細(xì)內(nèi)容,更多關(guān)于Spring切點(diǎn)選擇連接點(diǎn)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java中ResultSetMetaData 元數(shù)據(jù)的具體使用

    Java中ResultSetMetaData 元數(shù)據(jù)的具體使用

    本文主要介紹了Java中ResultSetMetaData 元數(shù)據(jù)的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Java中輸入單個(gè)char類(lèi)型的字符方式

    Java中輸入單個(gè)char類(lèi)型的字符方式

    這篇文章主要介紹了Java中輸入單個(gè)char類(lèi)型的字符方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • MyBatis insert操作插入數(shù)據(jù)之后返回插入記錄的id

    MyBatis insert操作插入數(shù)據(jù)之后返回插入記錄的id

    今天小編就為大家分享一篇關(guān)于MyBatis插入數(shù)據(jù)之后返回插入記錄的id,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • SpringBoot根據(jù)各地區(qū)時(shí)間設(shè)置接口有效時(shí)間的實(shí)現(xiàn)方式

    SpringBoot根據(jù)各地區(qū)時(shí)間設(shè)置接口有效時(shí)間的實(shí)現(xiàn)方式

    這篇文章給大家介紹了SpringBoot根據(jù)各地區(qū)時(shí)間設(shè)置接口有效時(shí)間的實(shí)現(xiàn)方式,文中通過(guò)代碼示例給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • Java利用JavaCPP調(diào)用算法示例

    Java利用JavaCPP調(diào)用算法示例

    本文主要介紹了Java利用JavaCPP調(diào)用算法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 解析Java異常的棧軌跡及其相關(guān)方法

    解析Java異常的棧軌跡及其相關(guān)方法

    這篇文章主要介紹了解析Java異常的棧軌跡及其相關(guān)方法,包括棧軌跡的打印和fillInStackTrace方法等,需要的朋友可以參考下
    2015-11-11
  • Java中jdk1.8和jdk17相互切換實(shí)戰(zhàn)步驟

    Java中jdk1.8和jdk17相互切換實(shí)戰(zhàn)步驟

    之前做Java項(xiàng)目時(shí)一直用的是jdk1.8,現(xiàn)在想下載另一個(gè)jdk版本17,并且在之后的使用中可以進(jìn)行相互切換,下面這篇文章主要給大家介紹了關(guān)于Java中jdk1.8和jdk17相互切換的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • idea啟動(dòng)項(xiàng)目報(bào)端口號(hào)沖突或被占用的解決方法

    idea啟動(dòng)項(xiàng)目報(bào)端口號(hào)沖突或被占用的解決方法

    這篇文章主要介紹了idea啟動(dòng)項(xiàng)目報(bào)端口號(hào)沖突或被占用的解決方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Quartz高可用定時(shí)任務(wù)的快速上手指南

    Quartz高可用定時(shí)任務(wù)的快速上手指南

    Quartz的分布式策略就是一種以數(shù)據(jù)庫(kù)作為邊界資源的并發(fā)策略,每個(gè)節(jié)點(diǎn)都遵守相同的操作規(guī)范,使得對(duì)數(shù)據(jù)庫(kù)的操作可以串行執(zhí)行,而不同名稱(chēng)的調(diào)度器又可以互不影響的并行運(yùn)行,下面這篇文章主要介紹了Quartz高可用定時(shí)任務(wù)快速上手的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • Java String字符串的常用使用方法

    Java String字符串的常用使用方法

    String是JDK提供的一個(gè)類(lèi),是引用類(lèi)型,并不是基本的數(shù)據(jù)類(lèi)型,String用于字符串操作,在之前學(xué)習(xí)c語(yǔ)言的時(shí)候,對(duì)于一些字符串,會(huì)初始化字符數(shù)組表示,本文給大家介紹Java String字符串的常用使用方法,感興趣的朋友一起看看吧
    2025-04-04

最新評(píng)論