spring aop基本概念

2021-09-12 05:48:48 字數 2203 閱讀 9409

aop詞彙:

[b]joinpoint[/b]:在程式執行過程中某個特定的點,比如某方法呼叫的時候或者處理異常的時候。在spring aop中,乙個連線點總是表示乙個方法的執行。通俗的說就是加入切點的那個點.proceedingjoinpoint

[b]advice[/b]:待織入的邏輯

前置通知(before advice):在某連線點之前執行的通知,但這個通知不能阻止連線點之前的執行流程(除非它丟擲乙個異常)。

後置通知(after returning advice):在某連線點正常完成後執行的通知:例如,乙個方法沒有丟擲任何異常,正常返回。

異常通知(after throwing advice):在方法丟擲異常退出時執行的通知。

最終通知(after (finally) advice):當某連線點退出的時候執行的通知(不論是正常返回還是異常退出)。

環繞通知(around advice):包圍乙個連線點的通知,如方法呼叫。這是最強大的一種通知型別。環繞通知可以在方法呼叫前後完成自定義的行為。它也會選擇是否繼續執行連線點或直接返回它自己的返回值或丟擲異常來結束執行。

繼承結構:

[img]

使用方法:

[img]

[b]advisor[/b]:擁有advice的介面

[b]pointcutadvisor[/b]:擁有切點邏輯advisor

[b]defaultpointcutadvisor[/b]:預設擁有匹配所有類和方法的pointcut 和 advice 的實現

其他:[b]regexpmethodpointcutadvisor[/b]:需要加上完整的類名和方法名,例如:com.xw.methodname或com.*.methodname或.*methodname

[b]namematchmethodpointcutadvisor[/b]:只需要方法名,不用加類名:*methodname

切入點:

[b]pointcut[/b]:提供類層面(classfilter)和方法層面(methodmatcher)的匹配邏輯

aop**:

[b]cglib2aopproxy[/b]:基於cglib實現的**,核心:enhancer

[b]jdkdynamicaopproxy[/b]:基於jdk動態**實現,核心介面:invocationhandler

切面:[b]aspect[/b]:是乙個pointcut 和 多個advice的模組化邏輯單元

最後總結:

[img]

舉例:1、spring aop:自動**(掃瞄切面配置)

<?xml version="1.0" encoding="utf-8"?>

...

這裡無需再配置**了,因為**將會由 defaultadvisorautoproxycreator 自動生成。也就是說,這個類可以掃瞄所有的切面類,並為其自動生成**。

2、spring + aspectj(基於註解:通過 aspectj execution 表示式攔截方法)

@aspect

@component

public class greetingaspect

private void before()

private void after()

}

<?xml version="1.0" encoding="utf-8"?>

類上面標註的 @aspect 註解,這表明該類是乙個 aspect(其實就是 advisor)。該類無需實現任何的介面,只需定義乙個方法(方法叫什麼名字都無所謂),只需在方法上標註 @around 註解,在註解中使用了 aspectj 切點表示式。方法的引數中包括乙個 proceedingjoinpoint 物件,它在 aop 中稱為 joinpoint(連線點),可以通過該物件獲取方法的任何資訊,例如:方法名、引數等。

3、spring + aspectj(基於配置)

<?xml version="1.0" encoding="utf-8"?>

使用 元素來進行 aop 配置,在其子元素中配置切面,包括增強型別、目標方法、切點等資訊。

無論您是不能使用註解,還是不願意使用註解,spring aop 都能為您提供全方位的服務。

Spring AOP 1 AOP基本概念

aop並不是spring的東西,spring整合了aop的功能,aop是種概念,好比oop,同oop相比,差別當然就是乙個是a乙個是o.這裡o比較熟悉就是object表示物件的意思,oop的核心是物件,同樣對於aop來說這裡a代表aspect,也就是aop的中心是aspect,aspect通常稱作 ...

基本概念 C 基本概念

由於工作中需要用到c 編寫的一些工具,有時候需要根據需求修改或者定製工具,所以現在不得不學習一下c 的基礎語法,此為筆記,不成章法!機器語言 組合語言 高階語言 面向過程的程式設計方法 物件導向的程式設計方法 泛型程式設計方法 1 演算法設計 2 源程式編輯 3 編譯 4 連線 5 執行除錯 輸入裝...

基本概念 數控系統基本概念

第一章 基本概念 數控工具機cnc是一種按事先編制好的加工零件程式進行加工的高效 自動化加工裝置。是 computer numerical control machine tools 的簡稱。數控工具機較好地解決了複雜 精密 小批量 多品種的零件加工問題,是一種柔性的 高效能的自動化工具機。西門子系...