亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于AOP的異常處理研究與應(yīng)用

        2014-10-21 19:57:17趙文杰
        計算機光盤軟件與應(yīng)用 2014年24期

        摘 要:異常處理是任何軟件中都必須面對的一類問題,但傳統(tǒng)的異常處理過程會和程序中的其它代碼產(chǎn)生了一種緊耦合關(guān)系,這種緊耦合關(guān)系使得代碼的重用和維護(hù)非常困難。本文將結(jié)合面向方面編程討論基于AOP的異常處理模型,該模型能夠比較好的實現(xiàn)異常處理代碼和業(yè)務(wù)邏輯代碼的解耦,大大提高整個程序的重用性和可維護(hù)性。

        關(guān)鍵詞:異常處理;面向方面編程;AOP

        中圖分類號:TP311.52

        對異常的處理是任何軟件都必須面對的一類問題,然而傳統(tǒng)的異常處理方式會使得負(fù)責(zé)異常處理的代碼彌散在整個程序中,形成一種和其它代碼的緊耦合,這種緊耦合使得程序的可維護(hù)性和可重用性非常差,同時也會干擾正常的業(yè)務(wù)邏輯,不利于異常這類問題的集中處理。本文結(jié)合目前比較流行的面向方面編程,給出一種基于AOP的集中式異常處理模型,該模型可以很好的實現(xiàn)異常處理和其它代碼的分離解耦。這使程序員在編程之初可以更加專注于業(yè)務(wù)邏輯的處理而無須分心去處理異常,對異常的處理可以在隨后進(jìn)行集中化處理并通過AOP的織入功能加入到程序中來。這大大增強了整個程序的可維護(hù)性和可重用性,也使我們的程序代碼看起來會更加干凈、結(jié)構(gòu)清晰。

        1 面向方面編程

        面向方面編程(Aspect Oriented Programming)是對面向?qū)ο缶幊痰倪M(jìn)一步補充,它可以將散布在程序中的不相關(guān)對象中的一些相同邏輯抽取出來模塊化,從而進(jìn)一步提高了程序的重用性和可維護(hù)性。AOP能夠?qū)⒛切┡c業(yè)務(wù)無關(guān),卻為業(yè)務(wù)模塊所共同調(diào)用的邏輯,例如:事務(wù)處理、日志管理、權(quán)限控制、異常處理、調(diào)試等模塊化,以降低模塊之間的耦合度,減少重復(fù)代碼的出現(xiàn)。

        1.1 AOP基本概念[1]

        方面(Aspect):對橫切性關(guān)注點的模塊化,是我們從業(yè)務(wù)模塊中抽取出來的一類相似邏輯的模塊化。

        連接點(Joinpoint):是橫切性邏輯的觸發(fā)點,可以是類的初始化、某方法的調(diào)用、特定異常的拋出。

        通知(Advice):在特定的連接點,AOP框架執(zhí)行的動作。通知的類型[2]包含:“around”、“before”、“after throwing”、“after returning”等,用于定義執(zhí)行動作在什么時機觸發(fā)。

        切入點(Pointcut):一個通知被觸發(fā)的一系列連接點的集合。

        目標(biāo)對象(Target Object):包含連接點的對象,是業(yè)務(wù)邏輯對象。

        AOP代理對象(AOP Proxy):AOP框架創(chuàng)建目標(biāo)對象的代理象,通過代理對象對目標(biāo)對象的功能進(jìn)行增強,將方面應(yīng)用到目標(biāo)對象。

        織入(Weaving):AOP框架創(chuàng)建AOP代理對象的過程,它將我們橫切性關(guān)注點融入到當(dāng)前系統(tǒng)中,擴展系統(tǒng)的功能。

        AOP可以降低模塊的耦合度,使系統(tǒng)更易擴展,增強代碼的復(fù)用性,還可以實現(xiàn)橫切性問題的遲綁定。

        2 基于AOP的異常處理模型

        圖1中給出的是一個使用AOP的異常處理模型。該異常處理模型中,Client為調(diào)用業(yè)務(wù)邏輯對象的客戶端,Target為提供服務(wù)的業(yè)務(wù)邏輯對象,ExAspect為處理異常的方面(Aspect),ExceptionHandler負(fù)責(zé)在截獲異常后對異常進(jìn)行處理,可以是對異常情況的記錄、發(fā)送通知等。在未使用AOP之前Client將會直接對Target進(jìn)行調(diào)用,異常處理代碼則被交織在業(yè)務(wù)邏輯代碼中,而在AOP異常處理模型中,Target被一個AOP代理對象所代理,AOP代理對象在調(diào)用Target之后捕捉異常,并對捕捉到的異常進(jìn)行處理,異常處理代碼則被模塊化入ExceptionHandler處理。這種方法實現(xiàn)了異常處理代碼和正常業(yè)務(wù)邏輯代碼的分離解耦,增強了代碼的復(fù)用性和可擴展性。

        下面我們以JAVA和Spring2.5為例,給出其程序代碼和配置的基本實現(xiàn)方式。

        配置中定義了切面pointcut1為com.test.service包下的所有對象方法的執(zhí)行,定義了after-rhrowing類型的通知,當(dāng)切面中的連接點執(zhí)行并有異常拋出時會觸發(fā)ExAspect中doThrowing方法的執(zhí)行,在doThrowing方法中我們調(diào)用ExceptionHandler模塊對異常進(jìn)行處理。使用過程中AOP代理的創(chuàng)建則由框架完成,這個過程在AOP中叫織入(weaving)。

        注意在Aspectj和Spring中after-throwing類型的通知在處理后會繼續(xù)把異常向上拋,如果想對異常類型進(jìn)行轉(zhuǎn)換或屏蔽,則可以使用around通知類型。

        3 結(jié)束語

        本文研究了AOP技術(shù)在異常處理上的應(yīng)用,并給出了一種實現(xiàn)模型。AOP技術(shù)的引入改變了傳統(tǒng)的異常處理方式,使得異常處理代碼和正常業(yè)務(wù)邏輯代碼實現(xiàn)了解耦,增強了代碼的復(fù)用性、可維護(hù)性、及程序可擴展性,AOP技術(shù)的引入還使得我們可以做到異常處理代碼的延長實現(xiàn),這樣在前期可以不用過多的考慮異常處理的問題,從而可以把主要精力集中在業(yè)務(wù)邏輯的實現(xiàn)上。

        參考文獻(xiàn):

        [1]Rod Johnson. Spring2.5參考手冊.譯者:丁雪豐等,譯.Spring中文論壇,2008:105-149.

        [2]The AspectJTM Programming Guide[EB/OL].http://www.eclipse.org/aspectj/doc/released/progguide/index.html,2003/2015.1

        作者簡介:趙文杰(1979-),男,河南安陽人,漢族,助理工程師,碩士研究生,研究方向:軟件工程。

        作者單位:濮陽市安陽地區(qū)醫(yī)院 計算機中心,河南安陽 455000

        嫩草影院未满十八岁禁止入内| 久久精品亚洲熟女av蜜謦| 丁香婷婷激情综合俺也去| 久久婷婷成人综合色| 日本手机在线| 亚洲人妻av综合久久| 日韩午夜理论免费tv影院| 粉嫩虎白女毛片人体| 国产综合色在线视频| 国产熟女精品一区二区| 日本高清乱码中文字幕| 欧美最大胆的西西人体44| 精品国产国产AV一区二区| 精品亚洲乱码一区二区三区| 亚洲国产色一区二区三区| 4hu四虎永久在线观看| 亚洲AV无码国产永久播放蜜芽| 亚洲av色香蕉第一区二区三区 | 亚洲第一女人av| 少妇无码av无码专区线| 巨臀中文字幕一区二区| 国语对白自拍视频在线播放| 天天爽夜夜爽夜夜爽精品视频 | 亚洲成a人片在线网站| 国产精品一区二区三区女同| 国产情侣一区二区三区| av无码久久久久不卡网站下载| 日产精品一区二区三区| 成年人视频在线观看麻豆| 色欲网天天无码av| 久久久精品免费观看国产| 人妻一区二区三区免费看| 一区二区三区国产免费视频| 欧洲熟妇色xxxx欧美老妇多毛图片| 国产清品夜色一区二区三区不卡 | 亚洲第一se情网站| 综合色天天久久| 亚洲三级香港三级久久| 人妻少妇中文字幕乱码| 亚洲人成人网毛片在线播放| 亚洲av午夜福利一区二区国产 |