Spring事物攔截器學(xué)習(xí)筆記
Spring事物攔截器,按照通知方式分為[前置通知(Before advice),返回后通知(After returning advice)
,拋出后通知(After throwing advice),后通知(After (finally) advice),環(huán)繞通知(Around Advice)]
配置方式分@AspectJ,XML,網(wǎng)上比較多的是Spring1.1或xml+@AspectJ方式配置,例子使用XML方式配置
1.定義切面類(lèi)接口,切面類(lèi)實(shí)現(xiàn)這個(gè)接口。聲明(如果被代理的目標(biāo)對(duì)象實(shí)現(xiàn)了至少一個(gè)接口,則會(huì)使用JDK動(dòng)態(tài)代理。所有該目標(biāo)類(lèi)型實(shí)現(xiàn)的接口都將被代理。若該目標(biāo)對(duì)象沒(méi)有實(shí)現(xiàn)任何接口,則創(chuàng)建一個(gè)CGLIB代理)























2.定義前置通知攔截處理類(lèi)








3.定義攔截器配置文件














4.測(cè)試一下前置通知












5.定義返回后通知攔截處理類(lèi)











6.定義攔截器配置文件









7.測(cè)試一下返回后通知













8.定義環(huán)繞通知攔截處理類(lèi)(環(huán)繞通知在一個(gè)方法執(zhí)行之前和之后執(zhí)行。 它使得通知有機(jī)會(huì)既在一個(gè)方法執(zhí)行之前又在執(zhí)行之后運(yùn)行。并且,它可以決定這個(gè)方法在什么時(shí)候執(zhí)行,如何執(zhí)行,甚至是否執(zhí)行。 環(huán)繞通知經(jīng)常在在某線程安全的環(huán)境下,你需要在一個(gè)方法執(zhí)行之前和之后共享某種狀態(tài)的時(shí)候使用。 請(qǐng)盡量使用最簡(jiǎn)單的滿足你需求的通知。(比如如果前置通知(before advice)也可以適用的情況下不要使用環(huán)繞通知))
通知方法的第一個(gè)參數(shù)的類(lèi)型必須是 ProceedingJoinPoint
類(lèi)型。在通知的主體中,調(diào)用 ProceedingJoinPoint
的proceed()
方法來(lái)執(zhí)行真正的方法。 proceed
方法也可能會(huì)被調(diào)用并且傳入一個(gè) Object[]
對(duì)象 - 該數(shù)組將作為方法執(zhí)行時(shí)候的參數(shù)。
















9.定義攔截器配置文件









10.測(cè)試一下環(huán)繞通知















posted on 2009-02-10 23:07 Pitey 閱讀(1689) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): Spring