AOP學習筆記

2021-08-31 11:21:18 字數 2374 閱讀 2166

1、依賴配置方式

測試方法:

public void test1()

spring.xml

com.dmeo.aop.shopping

welcomeadvice

2.不干涉原先的bean配置,aop真正的強悍啊,可以用來測試,新增日誌等

1).單個通知

"xmlns:xsi=""

xmlns:tx=""

xmlns:aop=""

xmlns:jee=""

xsi:schemalocation="

/spring-beans-2.0.xsd

/spring-tx-2.0.xsd

/spring-aop-2.0.xsd

/spring-jee-2.0.xsd">

xh26

注意前面的bean的引用以及aop的配置。

上面的配置只能夠對切面(方法)的一種行為進行攔截,比如welcomeadvice實現methodbeforeadvice,就只能在切點呼叫之前進行通知(前置通知)。(後置通知 afterreturningadvice、環繞通知 methodinterceptor、異常通知 throwsadvice)

下面給出對切面的所有行為進行攔截通知。

2).多個通知一起攔截

"xmlns:xsi=""

xmlns:aop=""

xsi:schemalocation="

/spring-beans-2.0.xsd

/spring-aop-2.5.xsd"

default-autowire="autodetect">

測試類:

public static void main(string args)

public static void testcall()

public static void testthrow() catch (illegalargumentexception e)

}詳細**見附件~~~

重點說明:

《spring參考手冊》中定義了以下幾個aop的重要概念,結合以上**分析如下:

連線點(joinpoint) :程式執行過程中的某一行為,例如,aserviceimpl.bara()的呼叫或者bserviceimpl.barb(string _msg, int _type)丟擲異常等行為。

通知(advice) :「切面」對於某個「連線點」所產生的動作,例如,testaspect中對com.spring.service包下所有類的方法進行日誌記錄的動作就是乙個advice。其中,乙個「切面」可以包含多個「advice」,例如testaspect

切入點(pointcut) :匹配連線點的斷言,在aop中通知和乙個切入點表示式關聯。例如,testaspect中的所有通知所關注的連線點,都由切入點表示式execution(* com.spring.service.*.*(..))來決定

目標物件(target object) :被乙個或者多個切面所通知的物件。例如,aservcieimpl和bserviceimpl,當然在實際執行時,springaop採用**實現,實際aop操作的是targetobject的**物件。

aop**(aopproxy) 在springaop中有兩種**方式,jdk動態**和cglib**。預設情況下,targetobject實現了介面時,則採用jdk動態**,例如,aserviceimpl;反之,採用cglib**,例如,bserviceimpl。強制使用cglib**需要將<aop:config>proxy-target-class屬性設為true

execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?)

modifiers-pattern:方法的操作許可權

ret-type-pattern:返回值

declaring-type-pattern:方法所在的包

name-pattern:方法名

parm-pattern:引數名

throws-pattern:異常

其中,除ret-type-pattern和name-pattern之外,其他都是可選的。上例中,execution(* com.spring.service.*.*(..))表示com.spring.service包下,返回值為任意型別;方法名任意;引數不作限制的所有方法。

AOP學習筆記

aop aspect oriented programming 面向方面程式設計 oop object oriented programming 物件導向程式設計 oop程式設計方式,函式的執行與呼叫基於編譯的堆疊,aop就是在經典的oop堆疊中實現呼叫的攔截與函式切入,以達到函式塊與函式塊間解耦的...

Spring學習筆記 AOP

1 匯入aop模組 spring aop spring aspects 2 定義乙個業務邏輯 3 定義乙個日誌切面類 通知方法 前置通知 before 在目標方法執行之前執行 後置通知 after 在目標方法執行結束後執行 返回通知 afterrerurning 在目標方法正常返回之後執行 異常通知...

初窺AOP(學習筆記)

aop為 aspect oriend programming的縮寫,意思為面向切面程式設計,是通過預編譯方式和執行期動態 實現程式功能的統一維護的一種技術。aop是oop的延續,是軟體開發中的乙個熱點,也是spring框架中的乙個重要內容,是函式式程式設計的一種衍生范型。利用aop可以對業務邏輯的各...