Spring AOP基礎知識學習 XML配置

2021-07-14 13:46:18 字數 2808 閱讀 8611

在spring的配置檔案中,所有切面、切入點和增強處理都必須定義在元素內部。元素下可以包含多個元素,乙個可以包含pointcut、advisor和aspect元素,且這三個元素必須按照此順序來定義。關於元素所包含的字元素如下圖所示。

1)配置切面

定義切面使用上圖中的元素,使用該元素來定義切面時,其實質是將乙個已有的spring bean轉換成切面bean,所以需要先定義乙個普通的springbean。

因為切面bean可以當成乙個普通的spring bean來配置,所以我們完全可以為該切面bean配置依賴注入。當切面bean定義完成後,通過在元素中使用ref屬性來引用該bean,就可以將該bean轉換成乙個切面bean了。

配置元素時可以指定如下三個屬性。

2)配置增強處理

與使用@aspectj完全一樣,使用xml一樣可以配置before、after、afterreturning、afterthrowing和around5種增強處理,而且完全支援和@aspect完全一樣的語義。

使用xml配置增強處理分別依賴於如下幾個元素。

上面的這些元素都不支援使用子元素,但通常可以指定如下屬性。

<?xml version="1.0" encoding="gbk"?>

xmlns=""

xmlns:xsi=""

xmlns:aop=""

xsi:schemalocation="

/spring-beans-3.0.xsd

/spring-aop-3.0.xsd">

id="fouradviceaspect"

ref="fouradvicebean"

order="2">

pointcut="execution(* com.bh.service.impl.*.*(..))"

method="release"/>

pointcut="execution(* com.bh.service.impl.*.*(..))"

method="authority"/>

pointcut="execution(* com.bh.service.impl.*.*(..))"

method="log"

returning="rvt"/>

pointcut="execution(* com.bh.service.impl.*.*(..))"

method="processtx"/>

aop:aspect>

id="secondadviceaspect"

ref="secondadvicebean"

order="1">

pointcut="execution(* com.bh.service.impl.*.*(..)) and args(aa)"

method="authority" />

aop:aspect>

aop:config>

id="chinese"

class="com.bh.service.impl.chinese" />

id="fouradvicebean"

class="com.bh.advice.fouradvicetest" />

id="secondadvicebean"

class="com.bh.advice.secondadvicetest" />

beans>

3)配置切入點spring提供了元素來定義切入點。當把元素作為的子元素定義時,表明該切入點可被多個切面共享;當把元素作為的子元素定義時,表明該切入點只能在對應的切面中有效。

配置元素時通常需要制定如下兩個屬性。

<?xml version="1.0" encoding="gbk"?>

xmlns=""

xmlns:xsi=""

xmlns:aop=""

xsi:schemalocation="

/spring-beans-3.0.xsd

/spring-aop-3.0.xsd">

id="mypointcut"

expression="execution(* com.bh.service.impl.*.*(..))"/>

id="afterthrowingadviceaspect"

ref="afterthrowingadvicebean"

order="1">

pointcut-ref="mypointcut"

method="dorecoveryactions"

throwing="ex"/>

aop:aspect>

aop:config>

id="chinese"

class="com.bh.service.impl.chinese"/>

id="afterthrowingadvicebean"

class="com.bh.advice.afterthrowingadvicetest"/>

beans>

基礎知識學習

format 字串格式化的一種方式 10月 日 format 1 10月 日 format 1,2,3 10月 日 format 月 日 format 1,2,3 月 日 format 1 一 列表推導式 幫助快速的生成包含一堆資料的列表 i 10 for i in range 10 10 11,1...

QT學習 基礎知識

qt把它所支援的平台分兩級,第一級是重點支援的,第二級次之 第一級平台 platform compilers linux 32 and 64 bit gcc 4.2 microsoft windows xp gcc 4.4 mingw 32 bit msvc 2003,2005 32 and 64 ...

機器學習基礎知識

machine learning的主要兩個應用方面 人工智慧 資料科學。什麼是人工智慧 artificial intelligence ai是不確定性管理 uncertainty management 的體現 ai what to do when you don t know what to do ...