<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 495,  comments - 11,  trackbacks - 0

    需明確的幾個概念:

    l???????? 通知(Advice):用于告知系統(tǒng)將有哪些新的行為。

    l???????? 切入點(Pointcut):定義了通知應該在應用到那些連接點。

    l???????? 目標對象(Target):被通知的對象。

    l???????? 代理(Proxy):將通知應用到目標對象后創(chuàng)建的對象。

    Spring有兩種代理創(chuàng)建方式:

    1.???如果目標對象實現(xiàn)了一個或多個接口暴露的方法,Spring將使用JDKjava.lang.reflect.Proxy創(chuàng)建代理。這個類讓Spring動態(tài)產(chǎn)生一個新的類,它實現(xiàn)了所需的接口,織入了通知,并且代理目標的所有請求。(這篇主要介紹這個方式)

    2.???如果目標對象沒有實現(xiàn)任何接口,Spring使用CGLIB庫生成目標對象的子類。在創(chuàng)建這個子類的時候,Spring將通知織入,并且將對目標對象的調(diào)用委托給這個子類。

    下面以一個實例說明Spring AOP的基本開發(fā)方法:

    一.創(chuàng)建通知

    Spring連接點模型是建立在方法攔截上,這意味著你編寫的

    Spring通知會在方法調(diào)用周圍的各個地方織入系統(tǒng)中。

    TestAopServiceAdvice實現(xiàn)了接口MethodBeforeAdvice(前置通知),并實現(xiàn)它的惟一的方法before,這個類就可以在調(diào)用目標對象前被調(diào)用。同樣的還有AfterReturningAdvice(后置通知)MethodInterceptor(環(huán)繞通知),異常通知(ThrowsAdvice),引入通知等。

    在這個方法中我們輸出了一個字符串TestAopServiceAdvice,用于驗證這個方法是否在目標對象前調(diào)用了。

    注意:我們無法改變before方法中的參數(shù)argstarget中的值,args中存的是原來要傳入目標對象的變量,target即指目標對象。

    二.配置Spring XML配置文件

    要在Spring中實現(xiàn)AOP,一般情況下需要配置4bean

    1.???目標對象(target

    2.???通知(advice)

    3.???切入點(pointcut)

    4.???代理(proxy)

    切入點又分為靜態(tài)切入點和動態(tài)切入點

    l???????? 靜態(tài)切入點的意思是通知總是被執(zhí)行,也是最常用的一種切入點。

    l???????? 動態(tài)切入點根據(jù)運行時方法的參數(shù)值決定通知是否被執(zhí)行。

    在圖2中,定義了使用了一個Spring提供的靜態(tài)切入點

    NameMatchMethodPointAdvisor,它保證了當被調(diào)用的方法的名字與給出的映射名字相匹配的時候,這個切入點才匹配。

    Spring提供的另一個靜態(tài)切入點為RegexpMethodPointcutAdvisor,讓你可以利用正則表達式來定義切入點,正則表達式需要jakarta-oro.jar包的支持。

    使用ProxyBeanFactory可以創(chuàng)建一個被通知的類,即代理對象。它的最常用的三個控制行為的屬性是:

    l???????? proxyInterfaces:代理應該實現(xiàn)的接口列表。

    l???????? interceptorNames:需要應用到目標對象上的通知Bean的名字。可以是攔截器、Advisor或其他通知類的名字。

    注:在用容器的getBean方法時,應該是getBean(代理類的名字),而不是getBean(目標對象的名字),否則AOP無法工作。

    posted on 2009-07-20 21:43 jadmin 閱讀(83) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 成人人免费夜夜视频观看| 99久久免费看国产精品| 国产zzjjzzjj视频全免费| 日本亚洲免费无线码| 好男人视频社区精品免费| 在线观看亚洲AV日韩A∨| 久久久久久国产精品免费免费| 亚洲成AV人综合在线观看| 在线视频免费观看高清| 国产精品亚洲片夜色在线| 成年18网站免费视频网站| 亚洲aⅴ无码专区在线观看春色| 日韩激情淫片免费看| 亚洲国产免费综合| 精品国产_亚洲人成在线高清| 无码人妻一区二区三区免费看| 亚洲一区二区三区首页| 无码人妻一区二区三区免费手机| 日韩亚洲人成在线| 亚洲AⅤ永久无码精品AA| 99久久99这里只有免费的精品| 亚洲AV日韩AV天堂一区二区三区| 亚洲高清视频免费| 国产AV无码专区亚洲AV蜜芽| 亚洲日韩人妻第一页| 日本免费污片中国特一级| 亚洲精品456人成在线| 免费国产美女爽到喷出水来视频| 国产精品视频全国免费观看| 亚洲韩国在线一卡二卡| 日韩成人在线免费视频| 中文字幕一区二区免费| 亚洲成人黄色网址| 免费人成在线观看网站品爱网日本 | 国产亚洲av片在线观看18女人| 爱丫爱丫影院在线观看免费| 亚洲乱码中文字幕小综合| 成人亚洲综合天堂| 日本免费网站视频www区| 国产亚洲精品免费| 亚洲AV无码国产丝袜在线观看|