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

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

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

    我的漫漫程序之旅

    專注于JavaWeb開發(fā)
    隨筆 - 39, 文章 - 310, 評(píng)論 - 411, 引用 - 0
    數(shù)據(jù)加載中……

    Spring AOP學(xué)習(xí)體會(huì)


    需明確的幾個(gè)概念:
                                                      
    1、通知(Advice):用于告知系統(tǒng)將有哪些新的行為。
    2、切入點(diǎn)
    (Pointcut):
    定義了通知應(yīng)該在應(yīng)用到那些連接點(diǎn)
    3、目標(biāo)對(duì)象
    (Target)
    :被通知的對(duì)象。
    4、
    代理(Proxy):將通知應(yīng)用到目標(biāo)對(duì)象后創(chuàng)建的對(duì)象。

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

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

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

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

    一.創(chuàng)建通知

    Spring連接點(diǎn)模型是建立在方法攔截上,這意味著你編寫的Spring通知會(huì)在方法調(diào)用周圍的各個(gè)地方織入系統(tǒng)中。

    1

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

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

    注意:我們無法改變before方法中的參數(shù)argstarget中的值,args中存的是原來要傳入目標(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)
    1、
     靜態(tài)切入點(diǎn)的意思是通知總是被執(zhí)行,
    也是最常用的一種切入點(diǎn)。
    2、
       動(dòng)態(tài)切入點(diǎn)根據(jù)運(yùn)行時(shí)方法的參數(shù)值決定通知是否被執(zhí)行。

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

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

       Spring提供的另一個(gè)靜態(tài)切入點(diǎn)為RegexpMethodPointcutAdvisor,讓你可以利用正則表達(dá)式來定義切入點(diǎn).

     使用ProxyBeanFactory可以創(chuàng)建一個(gè)被通知的類,即代理對(duì)象。它的最常用的個(gè)控制行為的屬性是:
    1、
    proxyInterfaces
    :代理應(yīng)該實(shí)現(xiàn)的接口列表
    2、
    interceptorNames:需要應(yīng)用到目標(biāo)對(duì)象上的通知Bean的名字??梢允菙r截器、Advisor或其他通知類的名字。

    注:在用容器的getBean方法時(shí),應(yīng)該是getBean(代理類的名字),而不是getBean(目標(biāo)對(duì)象的名字),否則AOP無法工作。



    posted on 2007-12-02 09:03 々上善若水々 閱讀(1080) 評(píng)論(0)  編輯  收藏 所屬分類: Spring

    主站蜘蛛池模板: 免费福利电影在线观看| 日本免费中文字幕在线看| 亚洲av无码天堂一区二区三区| 亚洲人成依人成综合网| 免费精品国自产拍在线播放| 成年人网站免费视频| 国产午夜亚洲精品午夜鲁丝片| 亚洲黄色激情视频| 久久精品免费电影| 亚洲国产免费综合| 亚洲AV无码AV男人的天堂不卡| 美丽的姑娘免费观看在线播放 | 亚洲自偷精品视频自拍| 久久久久久国产a免费观看不卡| 男女交性永久免费视频播放| 亚洲an日韩专区在线| 91精品国产免费| 亚洲成AV人片在| 一个人晚上在线观看的免费视频 | 国产成人无码a区在线观看视频免费| 亚洲精品动漫在线| 国精产品一区一区三区免费视频| 国产免费牲交视频| 亚洲精品456人成在线| 亚洲人成免费电影| 亚洲最大成人网色| 久草免费福利视频| 亚洲综合色婷婷七月丁香| 成人精品综合免费视频| 免费吃奶摸下激烈视频| 亚洲AV日韩AV无码污污网站| 毛片a级毛片免费观看品善网| 亚洲娇小性xxxx色| 免费看韩国黄a片在线观看| 亚洲婷婷天堂在线综合| 久久国产高潮流白浆免费观看| 久久亚洲精品AB无码播放| 久久免费高清视频| 久久精品亚洲中文字幕无码网站| 99re6在线视频精品免费| 国产亚洲人成无码网在线观看|