亚洲免费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日韩| 成在线人av免费无码高潮喷水| 久久婷婷香蕉热狠狠综合| 久久一区二区三区不卡| 中文字幕乱码亚洲无线| 美女露出奶头扒开内裤的视频| 亚洲精品成人网站在线播放| 97久久精品亚洲中文字幕无码| 久久综合精品国产丝袜长腿| 囯产精品无码一区二区三区AV| av天堂手机在线免费| 美女丝袜美腿玉足视频| 国产精品麻豆va在线播放| 国产成人免费一区二区三区| 国产美女高潮流白浆在线观看| 亚洲国产日韩综合天堂| 国产成人亚洲综合| 少妇性饥渴bbbbb搡bbbb| 亚洲熟妇网| 亚洲国产精品第一区二区三区 | 日本一二三区在线视频观看| 成熟人妻换xxxx| 99久久婷婷国产综合精品青草免费| 曝光无码有码视频专区| 国产免费播放一区二区| 国产成人av三级三级三级在线 | 18国产精品白浆在线观看免费 | 比较有韵味的熟妇无码| 曰批免费视频播放免费直播| 精品九九视频| 手机在线观看亚洲av| 免费久久99精品国产| 无码人妻精一区二区三区| 午夜免费福利一区二区无码AV| 亚洲一区二区丝袜美腿| 久久久久久夜精品精品免费啦| 中国丰满熟妇xxxx| h动漫尤物视频|