spring學習記錄(六)

2021-10-16 02:28:06 字數 2064 閱讀 5649

public

class

myadvice

implements

methodinterceptor

}

然後,在xml配置檔案中進行通知和切點的定義,以及將切點和通知進行組裝

"myadvice"

class

="com.huwc.myadvice"

>

bean

>

<

aop:config

proxy-target-class

="true"

>

<

aop:pointcutid=

"pointcut"

expression

="execution(* com.huwc.proxy.*.*(..))"

/>

<

aop:advisor

advice-ref

="myadvice"

pointcut-ref

="pointcut"

>

aop:advisor

>

aop:config

>

通過以上的方式,在ioc容器中再進行獲取相應的bean的時候,獲取到的即為經過增強之後的**物件了。或者說,在ioc容器進行初始化的時候,被切點標記到的bean會自動通過動態**,生成新的**物件了。

<

aop:aspectj-autoproxy

>

aop:aspectj-autoproxy

>

然後,直接定義切面類,在切面類的方法中通過註解生命通知和切點表示式即可:

@component

@aspect

public

class

myadvice

/** * 前置通知

* @param joinpoint

*/@before

("execution(* com.huwc.dynamic.sellimpl.*(..))"

)public

void

invokemethodbefore

(joinpoint joinpoint)

/** * 後置通知

* @param joinpoint

*/@after

("execution(* com.huwc.dynamic.sellimpl.*(..))"

)public

void

invokemethodafter

(joinpoint joinpoint)

/** * 返回通知

* @param joinpoint

* @param result

*/@afterreturning

(pointcut =

"execution(* com.huwc.dynamic.sellimpl.*(..))"

, returning =

"result"

)public

void

invokemethodafterreturning

(joinpoint joinpoint, object result)

/** * 異常通知

* @param joinpoint

* @param e

*/@afterthrowing

(pointcut =

"execution(* com.huwc.dynamic.sellimpl.*(..))"

,throwing =

"e")

public

void

invokemethodafterthrowing

(joinpoint joinpoint, exception e)

}

在以上myadvice類的**中可以看出,spring中通知型別有5種,分別為:

以上。

spring學習記錄

在編寫乙個程式的過程中,分析程式所包含的元件,定義相關的介面 介面的定義需要仔細的分析程式的需求,此時不需要關心介面的 實現,注重的是介面所需完成的功能,這一步驟是非常重要的 介面的定義使得在編寫程式時可以把精力放在主體結構上的編寫,而不用去關心物件之間複雜關係。面向切面程式設計,對於一段業務邏輯 ...

Spring 學習筆記(六)

首先搞清楚乙個問題,面向介面程式設計 的優勢,避免對特定類的依賴,避免對特定介面的實現類的過度耦合。解決辦法,使用乙個工廠類,這個工廠類來例項化具體的介面的實現類,這樣,主體物件只需要依賴工廠類,具體使用的實現類有變更的話,只是變更工廠類,而主體物件不需要做任何變動。name barinte ce ...

Spring學習 aop學習記錄

spring aop 面向方面程式設計 框架,用於在模組化方面的橫切關注點。簡單得說,它只是乙個 攔截一些過程,例如,當乙個方法執行,spring aop 可以劫持乙個執行的方法,在方法執行之前或之後新增額外的功能。在spring aop中,有 4 種型別通知 advices 的支援 hijackb...