spring系列之 切點 切面

2021-09-01 13:11:15 字數 1153 閱讀 2700

乙個類(show)裡面有乙個表演(display)的方法,在表演之前,應該有致辭(say)的方法,在表演之後,應該有鼓掌(hand)的方法。

為了高內聚低耦合,表演的方法應該單獨封裝在乙個類裡面,致辭和鼓掌的方法應該另外封裝,但在呼叫時必須按照順序來呼叫執行。這時候就需要設定切面和切點了!

切面應該設定在致辭(say)和鼓掌(hand)方法所在的類上面,同時,要在類裡面配置切點,類似:

通知、增強處理(advice): 就是你想要的功能,你給先定義好,然後在想用的地方用一下,包含aspect的一段處理**。

連線點(joinpoint): 就是spring允許你是通知(advice)的地方,基本每個方法的前、後(兩者都有也行),或丟擲異常時都可以是連線點,spring只支援方法連線點。其他如aspectj還可以讓你在構造器或屬性注入時都行,不過只要記住,和方法有關的前前後後都是連線點。連線點就是為了獲取切點方法的相關資訊(所在的類、入參、方法等)

切入點(pointcut) :上面說的連線點的基礎上,來定義切入點,你的乙個類裡,有15個方法,那就有十幾個連線點了,但是並不想在所有方法附近都使用通知(使用叫織入),只是想讓其中幾個,在呼叫這幾個方法之前、之後或者丟擲異常時乾點什麼,那麼就用切入點來定義這幾個方法,讓切點來篩選連線點,選中那幾個你想要的方法。

切面(aspect) :切面是通知和切入點的結合。連線點就是為了方便理解切點的,明白這個概念就行了。通知說明了幹什麼和什麼時候幹(什麼時候通過方法名中的befor,after,around等就能知道),切入點說明了在哪幹(指定到底是哪個方法),這就是乙個完整的切面定義。

@aspect //宣告切面,標記類  

public class wly

@before("performance()") //切點之前執行

public ....

@afterreturning("performance()") //切點執行成功之後執行

public ...

//@after("....") // 在切點之後執行,無論方法執行成功與否

@afterthrowing("performance()") //切點丟擲異常後執行

public ...

}

Spring AOP 之 通知 連線點 切點 切面

軟體系統可以看成是由一組關注點組成的,其中,直接的業務關注點,是直切關注點。而為直切關注點提供服務的,就是橫切關注點。什麼是面向切面程式設計 橫切關注點 影響應用多處的功能 安全 事務 日誌 切面 橫切關注點被模組化為特殊的類,這些類稱為切面 優點 每個關注點現在都集中於一處,而不是分散到多處 中 ...

spring AOP技術的切點 切面 通知的簡介

首先說一下aop技術在真實專案開發中的用處 對於我而言,技術小白,對於aop真實開發中用處知道的就那幾樣,日誌 許可權控制 事務管理 我們專案組對於aop的使用 我分析原始碼後 專案太大 主要用在了事務管理和異常處理 主要是處理登陸後資料庫連線異常的問題 切點 說直白點就是你要增強的那個方法,在這個...

spring 切面程式設計

spring aop就是乙個同心圓,要執行的方法為圓心,最外層的order最小。從最外層按照aop1 aop2的順序依次執行doaround方法,dobefore方法。然後執行method方法,最後按照aop2 aop1的順序依次執行doafter doafterreturn方法。也就是說對多個ao...