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...