Spring AOP學(xué)習(xí)體會(huì)
Spring有兩種代理創(chuàng)建方式: |
|
2.如果目標(biāo)對(duì)象沒(méi)有實(shí)現(xiàn)任何接口,Spring使用CGLIB庫(kù)生成目標(biāo)對(duì)象的子類(lèi)。在創(chuàng)建這個(gè)子類(lèi)的時(shí)候,Spring將通知織入,并且將對(duì)目標(biāo)對(duì)象的調(diào)用委托給這個(gè)子類(lèi)。 下面以一個(gè)實(shí)例說(shuō)明Spring AOP的基本開(kāi)發(fā)方法: 一.創(chuàng)建通知 Spring連接點(diǎn)模型是建立在方法攔截上,這意味著你編寫(xiě)的Spring通知會(huì)在方法調(diào)用周?chē)母鱾€(gè)地方織入系統(tǒng)中。 圖1 TestAopServiceAdvice實(shí)現(xiàn)了接口MethodBeforeAdvice(前置通知),并實(shí)現(xiàn)它的惟一的方法before,這個(gè)類(lèi)就可以在調(diào)用目標(biāo)對(duì)象前被調(diào)用。同樣的還有AfterReturningAdvice(后置通知),MethodInterceptor(環(huán)繞通知),異常通知(ThrowsAdvice),引入通知等。 在這個(gè)方法中我們輸出了一個(gè)字符串TestAopServiceAdvice,用于驗(yàn)證這個(gè)方法是否在目標(biāo)對(duì)象前調(diào)用了。 注意:我們無(wú)法改變before方法中的參數(shù)args和target中的值,args中存的是原來(lái)要傳入目標(biāo)對(duì)象的變量,target即指目標(biāo)對(duì)象。 二.配置Spring XML配置文件 要在Spring中實(shí)現(xiàn)AOP,一般情況下需要配置4個(gè)bean: 1.目標(biāo)對(duì)象(target) 2.通知(advice) 3.切入點(diǎn)(pointcut) 4.代理(proxy) 圖2 切入點(diǎn)又分為靜態(tài)切入點(diǎn)和動(dòng)態(tài)切入點(diǎn) 在圖2中,定義了使用了一個(gè)Spring提供的靜態(tài)切入點(diǎn) NameMatchMethodPointAdvisor,它保證了當(dāng)被調(diào)用的方法的名字與給出的映射名字相匹配的時(shí)候,這個(gè)切入點(diǎn)才匹配。 Spring提供的另一個(gè)靜態(tài)切入點(diǎn)為RegexpMethodPointcutAdvisor,讓你可以利用正則表達(dá)式來(lái)定義切入點(diǎn). 使用ProxyBeanFactory可以創(chuàng)建一個(gè)被通知的類(lèi),即代理對(duì)象。它的最常用的二個(gè)控制行為的屬性是: 注:在用容器的getBean方法時(shí),應(yīng)該是getBean(代理類(lèi)的名字),而不是getBean(目標(biāo)對(duì)象的名字),否則AOP無(wú)法工作。 |
posted on 2007-12-02 09:03 々上善若水々 閱讀(1085) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): Spring