除了使用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
>
packagecom.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...