@before: 前置通知, 在方法執行之前執行
@after: 後置通知, 在方法執行之後執行
@afterrunning: 返回通知, 在方法返回結果之後執行
@afterthrowing: 異常通知, 在方法丟擲異常之後
@around: 環繞通知, 圍繞著方法執行
@aspect
@component
public
class
loggingaspect
//後置通知, 在方法執行之後執行
@after
("execution(* bean.calculator.*(int, int))"
)public
void
aftermethod
(joinpoint joinpoint)
//返回通知, 在方法返回結果之後執行
@afterreturning
(value =
"execution(* bean.calculator.*(int, int))"
,returning =
"result"
)public
void
afterreturning
(joinpoint joinpoint,object result)
//異常通知, 在方法丟擲異常之後
@afterthrowing
(value =
"execution(* bean.calculator.*(int, int))"
,throwing =
"e")
public
void
afterthrowing
(joinpoint joinpoint,exception e)
//環繞通知, 圍繞著方法執行
@around
("execution(* bean.calculator.*(int, int))"
)public object aroundmethod
(proceedingjoinpoint pjp)
catch
(throwable e)
//後置通知
system.out.
println
("the method "
+ methodname +
"<--");
return result;
}}
@order(1
)@aspect
@component
public
class
loggingaspect
//定義乙個方法,用來宣告切入表示式
//使用@pointcut宣告切入表示式
@pointcut
("execution(* bean.calculator.*(int, int))"
)public
void
expression()
//直接使用方法名引入當前的切入點表示式
@before
("expression()"
)public
void
beforemethod
(joinpoint joinpoint)
(1) 配置bean
(2) 配置切面bean
(3) 配置aop(配置切點表示式、配置切面及通知)
verificationaspect:驗證作用的切面
public
class
verificationaspect
}
<
!-- 配置 bean --
>
"calculator"
class
="bean.calculatorimpl"
>
<
/bean>
<
!-- 配置切面的 bean.
-->
"verification"
class
="bean.verificationaspect"
>
<
/bean>
<
!-- 配置 aop --
>
<
!-- 配置切點表示式 --
>
"point" expression=
"execution(* bean.calculator.*(int, int))"
/>
<
!-- 配置切面及通知 --
>
"verification" order=
"1">
"beforemehtod" pointcut-ref=
"point"
/>
<
/aop:aspect>
<
/aop:config>
spring aop註解與xml配置兩種方式
spring aop切面兩種使用方式 1.使用xml配置檔案的方式,個人感覺 比較清晰,能夠體現出明顯的層次感 以上部分為spring容器建立後管理的bean 以下為開啟aop的相關配置 junit 測試 runwith springjunit4classrunner.class contextco...
學習Spring aop兩種配置方式
aop 面向切面程式設計,它可以解決重複 aop有兩種方式 1 在springmvc servlet.xml中配置aop,應用bean檔案 2 在bean檔案的類上加 component component public class loging public object doaround pro...
SpringAop兩種配置 註解方式和xml配置
一,什麼是springaop?所謂的springaop就是面向切面程式設計,就是在你的原有專案功能上,通過aop去新增新的功能,這些功能是建立在原有的功能基礎上的,而且不會修改原來的動能 以及功能邏輯。例如你用銀行卡購物,購物付款,這是乙個功能。付款後,銀行向你的手機傳送一條取錢資訊,這就是新加的功...