第六章 以XML方式配置切面

2022-06-28 02:57:11 字數 3622 閱讀 8548

除了使用aspectj註解宣告切面,spring也支援在bean配置檔案中宣告切面。這種宣告是通過aop命名空間中的xml元素完成的。​正常情況下,基於註解的宣告要優先於基於xml的宣告。通過aspectj註解,切面可以與aspectj相容,而基於xml的配置則是spring專有的。由於aspectj得到越來越多的 aop框架支援,所以以註解風格編寫的切面將會有更多重用的機會。

在bean配置檔案中,所有的spring aop配置都必須定義在元素內部對於每個切面而言,都要建立乙個元素來為具體的切面實現引用後端bean例項。​

切面bean必須有乙個識別符號,供元素引用。

<

bean

id="calculatorloggingaspect"

class

="com.jdy.spring2020.aop.calculatorloggingaspect"

/>

<

aop:config

>

<

aop:aspect

id="calculatorloggingaspect"

order

="0"

ref="calculatorloggingaspect"

>

aop:aspect

>

aop:config

>

切入點使用元素宣告。

切入點必須定義在元素下,或者直接定義在元素下。

基於xml的aop配置不允許在切入點表示式中用名稱引用其他切入點。

在aop命名空間中,每種通知型別都對應乙個特定的xml元素。

通知元素需要使用來引用切入點,或用直接嵌入切入點表示式。

method屬性指定切面類中通知方法的名稱

<?

xml version="1.0" encoding="utf-8"

?>

<

beans

xmlns

=""xmlns:xsi

=""xmlns:aop

=""xsi:schemalocation

="/spring-beans.xsd

">

<

bean

id="arithmeticcalculator"

class

="com.jdy.spring2020.scan.service.impl.arithmeticcalculatorimpl"

/>

<

bean

name

="arithmeticcalculatorlog"

class

="com.jdy.spring2020.aop.arithmeticcalculatorlog"

/>

<

aop:config

>

<

aop:pointcut

id="pointcut"

expression

="execution(* com.jdy.spring2020.scan.service.impl.arithmeticcalculatorimpl.*(..))"

/>

<

aop:aspect

ref="arithmeticcalculatorlog"

>

<

aop:before

method

="before"

pointcut-ref

="pointcut"

>

aop:before

>

<

aop:after

method

="after"

pointcut-ref

="pointcut"

>

aop:after

>

<

aop:after-returning

method

="afterrunning"

pointcut-ref

="pointcut"

returning

="result"

/>

<

aop:after-throwing

method

="afterthrowing"

pointcut-ref

="pointcut"

throwing

="ex"

/>

aop:aspect

>

aop:config

>

beans

>

package

com.jdy.spring2020.aop;

import

org.aspectj.lang.joinpoint;

import

org.aspectj.lang.proceedingjoinpoint;

public

class

arithmeticcalculatorlog

/***

* @param

joinpoint:連線點物件

*/public

void

after(joinpoint joinpoint)

/*** 返回通知:目標方法執行結束後,得到方法的返回值

* 獲取方法的返回值:通過returnning來指定乙個名字,必須要與方法的乙個引數名成一致。

* @param

joinpoint

* @param

result

*/public

void

afterrunning(joinpoint joinpoint,object result)

/*** 異常通知:目標方法執行結束後,目標方法丟擲異常

* 獲取方法的異常:通過throwing來指定乙個名字,必須要與方法的乙個引數名一致

* 可以通過形參中異常的型別來設定丟擲指定異常才會執行異常通知

* @param

joinpoint

*/public

void

afterthrowing(joinpoint joinpoint,exception ex)

//可以通過形參中異常的型別來設定丟擲指定異常才會執行異常通知

public

void

afterthrowing1(joinpoint joinpoint, nullpointerexception ex)

/*** 環繞通知

* @param

joinpoint

*/public

object around(proceedingjoinpoint joinpoint)

catch

(throwable throwable)

finally

return

obj;

}}

第六章 配置

why 配置 工程師往往無法預知可能發生的全部情況,因此可能產生變更的地方免去直接的 修改而進行配置預留。3.1 本地配置 這些配置其實也屬於 部分,真正可以動態修改的配置應該是簡單的 易於理解的 易於修改的。在單機時代,配置檔案就夠用了。運維工程師如果想修改配置,登入生產機器,用vim本文編輯,然...

第六章 網路配置

路由器的工作原理 1 路由器接收來自它連線的某個 的資料。2 路由器將資料向上傳遞。3 路由器檢查ip頭部中的目的位址,如果目的位址位於發出資料的那個網路,那麼路由器就放下被認為已經達到目的地的資料。4 如果資料要送往另乙個網路,那麼路由器就查詢路由表,以確定資料要 到的目的地。5 路由器確定哪個介...

mysql第六章 第六章 mysql日誌

第六章 mysql日誌 一 錯誤日誌 錯誤日誌的預設存放路徑是 mysql 存放資料的地方 hostname.err 1.修改錯誤日誌存放路徑 mysqld log error data mysql mysql.log 2.檢視配置命令 show variables like log error 3...