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

        ?

        AOP技術(shù)在Web系統(tǒng)日志和事物管理中的應(yīng)用

        2018-01-08 22:08:08唐念剛
        電子設(shè)計(jì)工程 2017年16期
        關(guān)鍵詞:事務(wù)管理切入點(diǎn)日志

        唐念剛,張 勇

        (1.武漢郵電科學(xué)研究院 湖北 武漢 430070;2.武漢長(zhǎng)江通信智聯(lián)技術(shù)有限公司 湖北 武漢430070)

        AOP技術(shù)在Web系統(tǒng)日志和事物管理中的應(yīng)用

        唐念剛1,張 勇2

        (1.武漢郵電科學(xué)研究院 湖北 武漢 430070;2.武漢長(zhǎng)江通信智聯(lián)技術(shù)有限公司 湖北 武漢430070)

        一個(gè)完整的軟件項(xiàng)目系統(tǒng)分為核心業(yè)務(wù)關(guān)注點(diǎn)與系統(tǒng)級(jí)的方面關(guān)注點(diǎn),利用AOP技術(shù)可以在Web系統(tǒng)中將項(xiàng)目中的業(yè)務(wù)邏輯與系統(tǒng)級(jí)邏輯進(jìn)行分離,達(dá)到松耦合的目的。文章首先介紹AOP技術(shù)的概念與原理,然后結(jié)合一個(gè)系統(tǒng)實(shí)例介紹兩種AOP技術(shù)分別在日志和事物管理中應(yīng)用,并證明其可行性。

        Web系統(tǒng);AOP技術(shù);日志管理;事物管理

        當(dāng)前,Web項(xiàng)目系統(tǒng)日趨復(fù)雜與龐大,應(yīng)用也越來(lái)越廣泛,為目前最重要的基于文檔的分布式系統(tǒng)。

        日志管理功能模塊在系統(tǒng)開(kāi)發(fā)與應(yīng)用中起著重要作用,系統(tǒng)日志管理可以記錄下系統(tǒng)進(jìn)行的一系列行為信息,包括開(kāi)發(fā)人員在開(kāi)發(fā)過(guò)程中調(diào)試異常操作的信息數(shù)據(jù),用戶在系統(tǒng)操作過(guò)程中記錄下的信息,提高了開(kāi)發(fā)人員的開(kāi)發(fā)效率,也提升了系統(tǒng)的安全性以及可操作性。事務(wù)管理模塊的作用是對(duì)系統(tǒng)數(shù)據(jù)庫(kù)操作進(jìn)行統(tǒng)一的提交或回滾,以便服務(wù)器保持?jǐn)?shù)據(jù)的完整性,事務(wù)管理模塊對(duì)于大型應(yīng)用系統(tǒng),尤其是并發(fā)性強(qiáng)的實(shí)時(shí)系統(tǒng)極為重要,保證系統(tǒng)能夠正確順利的運(yùn)行。

        傳統(tǒng)的日志與事務(wù)管理模塊的設(shè)計(jì)中代碼重復(fù)與代碼散亂給開(kāi)發(fā)與維護(hù)帶來(lái)了較大的困難。以關(guān)注點(diǎn)分離為核心思想的面向切面編程技術(shù)(AOP)能很好的解決上述問(wèn)題,利用AOP技術(shù)可以在Web系統(tǒng)中將項(xiàng)目中的業(yè)務(wù)邏輯與系統(tǒng)級(jí)邏輯進(jìn)行分離,減少重復(fù)代碼,達(dá)到松耦合的目的[1]。

        1 AOP技術(shù)概念與原理

        1.1 AOP基本概念

        AOP(Aspect Oriented Programming)即面向切面編程,可以將一些系統(tǒng)相關(guān)的工程,獨(dú)立提取出來(lái),然后通過(guò)切面切入到系統(tǒng),從而避免了在業(yè)務(wù)邏輯的代碼中混入過(guò)多的系統(tǒng)相關(guān)的代碼,比如事務(wù)管理、日志處理記錄等等,實(shí)現(xiàn)了系統(tǒng)松耦合的特點(diǎn)。AOP的幾個(gè)關(guān)鍵術(shù)語(yǔ)分別為:

        1)連接點(diǎn)(Joint Point)是程序執(zhí)行過(guò)程中可以切入的點(diǎn),它可以是對(duì)一個(gè)函數(shù)的調(diào)用或者是對(duì)象的一個(gè)屬性。

        2)切入點(diǎn)(PointCut)符合切點(diǎn)表達(dá)式的連接點(diǎn),也就是真正切入的地方。

        3)通知(Advice)切面在某個(gè)連接點(diǎn)執(zhí)行的操作,它可以分為前置通知(Before Advice)、后置通知(After Advice)、環(huán)繞通知(Around Advice)及異常通知(Throwing Advice)等,分別表示在調(diào)用或執(zhí)行方法的不同位置處切入。

        4)Aspect(切面)它是切點(diǎn)與通知的結(jié)合,切入系統(tǒng)的一個(gè)切面,比如事務(wù)管理、日記管理等[2]。

        1.2 AOP與OOP的區(qū)別與聯(lián)系

        OOP(面向?qū)ο缶幊蹋┙柚诿嫦驅(qū)ο蟮姆治觥⒃O(shè)計(jì)思想,開(kāi)發(fā)人員可以將現(xiàn)實(shí)領(lǐng)域的實(shí)體轉(zhuǎn)換為軟件系統(tǒng)中的對(duì)象,OOP中一切事物皆對(duì)象的思想很好的應(yīng)用于軟件系統(tǒng)中,但是其也有不足之處,OOP允許定義從左到右的關(guān)系,但例如日志記錄,事務(wù)管理,這些代碼水平的分布在所有對(duì)象的層次中,而與它所分布到的對(duì)象的核心功能毫無(wú)關(guān)系,在OOP設(shè)計(jì)中,它導(dǎo)致了大量的重復(fù)代碼的出現(xiàn),不利于系統(tǒng)的維護(hù)。

        AOP它是OOP技術(shù)的一種補(bǔ)充,它是利用一種稱為“橫切”的技術(shù),剖開(kāi)封裝對(duì)象的內(nèi)部,并將那些影響了多個(gè)類的公共行為封裝到一個(gè)可以重用的模塊,命名為“Aspect”,即切面,意思是說(shuō)將那些與業(yè)務(wù)邏輯無(wú)關(guān)的代碼,卻為業(yè)務(wù)模塊所共同調(diào)用的邏輯代碼封裝起來(lái),以便減少系統(tǒng)的重復(fù)代碼,降低模塊間的耦合度,有利于系統(tǒng)和的可操作性與可維護(hù)性[3]。圖1是軟件系統(tǒng)的縱向與橫向結(jié)構(gòu)圖。

        圖1 系統(tǒng)實(shí)現(xiàn)AOP思想圖

        切面與業(yè)務(wù)模塊是垂直的關(guān)系,我們關(guān)注的業(yè)務(wù)邏輯都是從前到后的整個(gè)生命周期的過(guò)程,而切面是橫切于各個(gè)業(yè)務(wù)功能模塊之上。

        1.3 AOP的工作原理

        AOP分為靜態(tài)AOP與動(dòng)態(tài)AOP,靜態(tài)AOP是指在預(yù)編譯階段采用Aspect技術(shù)實(shí)現(xiàn)的AOP,它是將切面代碼直接編譯到j(luò)ava類文件中。動(dòng)態(tài)AOP是指將切面代碼進(jìn)行動(dòng)態(tài)的織入實(shí)現(xiàn)的AOP。SpringAOP為動(dòng)態(tài)的AOP,實(shí)現(xiàn)技術(shù)為JDK提供的動(dòng)態(tài)代理技術(shù)和CGLIB(動(dòng)態(tài)字節(jié)碼增強(qiáng)技術(shù))。兩者實(shí)現(xiàn)技術(shù)不一樣,但都是基于代理模式,生成一個(gè)代理對(duì)象[4]。

        2 AspectJ技術(shù)在Web系統(tǒng)的應(yīng)用

        2.1 AspectJ技術(shù)概述

        AspectJ是一個(gè)基于java語(yǔ)言的AOP框架,提供了強(qiáng)大的AOP功能,其他很多AOP框架都借鑒后采納其中的一些思想。AspectJ是一種基于預(yù)編譯的AOP實(shí)現(xiàn)方式,即在編譯階段就對(duì)目標(biāo)類進(jìn)行修改,得到的class文件已經(jīng)是被修改過(guò)的,生成靜態(tài)的AOP代理類,支持編譯時(shí)織入切面,即所謂的CTW 機(jī)制[5]。

        2.2 基于AspectJ的日志管理的實(shí)現(xiàn)

        在一個(gè)Web系統(tǒng)中,日志管理記錄是必不可少的,屬于系統(tǒng)級(jí)的交叉業(yè)務(wù),我們可以將其放在切面中實(shí)現(xiàn)。由于日志文件提供的信息更方便程序開(kāi)發(fā)人員查看程序異常,所以我們把系統(tǒng)的異常信息通過(guò)日志文件的形式進(jìn)行輸出。下面,我們將結(jié)合道路運(yùn)輸管理服務(wù)平臺(tái)系統(tǒng)管理員操作用戶模塊的實(shí)現(xiàn)來(lái)說(shuō)明如何在Web系統(tǒng)應(yīng)用AspectJ技術(shù)實(shí)現(xiàn)日志記錄的管理。

        系統(tǒng)中我們需求是管理員在操作用戶模塊的時(shí)候要記錄管理員的操作記錄,記錄是哪個(gè)管理員增加修改刪除了內(nèi)容,從而確定責(zé)任,一次需要對(duì)每條信息的增刪改行為進(jìn)行日志記錄。日志系統(tǒng)需要記錄管理員的名字,操作時(shí)間,操作信息以及用戶數(shù)據(jù)信息以備后期查詢。

        2.2.1 配置文件

        系統(tǒng)在這里采用基于Annotation的“零配置”方式。首先啟用Spring對(duì)Aspect切面配置的支持[6]。在配置文件 spring-mybatis.xml(本系統(tǒng)為spring與mybatis整合的系統(tǒng))中加入如下代碼:

        2.2.2 定義切面

        當(dāng)啟動(dòng)@AspectJ支持后,接下來(lái)定義切面類,添加@AspectJ,spring容器會(huì)自動(dòng)識(shí)別該類作為切面類處理,添加@conponent,以便bean容器將該類掃描進(jìn)去[7]。代碼如下:

        定義對(duì)象yqUserMapper是為了操作數(shù)據(jù)庫(kù),將管理員即將改變數(shù)據(jù)庫(kù)用戶的數(shù)據(jù)信息提取出來(lái)。

        2.2.3 定義切入點(diǎn)

        這里采用Annotation標(biāo)注的通知方法定義切入點(diǎn)的,好處是其他通知可以共用這個(gè)切入點(diǎn),定義pointcut,用于對(duì)service層中一某種命名規(guī)范開(kāi)頭的方法進(jìn)行攔截[8,9]。代碼如下:

        切入點(diǎn)表達(dá)式,指定配置com.ycig.istp.yqt.service.impl包下YQUserImpl類中的所有方法作為切入點(diǎn)。關(guān)于切入點(diǎn)匹配規(guī)則表達(dá)式如圖2所示。

        圖2 切入點(diǎn)匹配規(guī)則表達(dá)式

        2.2.4 定義通知

        @Before表示目標(biāo)方法執(zhí)行前先執(zhí)行該通知對(duì)應(yīng)的方法,@Around表示目標(biāo)方法執(zhí)行前后執(zhí)行該通知對(duì)應(yīng)的方法,@After表示目標(biāo)方法執(zhí)行后執(zhí)行該通知對(duì)應(yīng)的方法,@AfterThrowing表示目標(biāo)方法產(chǎn)生異常時(shí)執(zhí)行該通知對(duì)應(yīng)的方法[10,11]。

        代碼示例如下:

        2.2.5 攔截controller

        由于本軟件系統(tǒng)的業(yè)務(wù)邏輯主要寫(xiě)在controller層,如要攔截controller層中方法異常時(shí)執(zhí)行異常通知,必須想辦法監(jiān)聽(tīng)controller層方法是否產(chǎn)生異常,切面類代碼如下:

        3 SpringAOP技術(shù)在Web系統(tǒng)中的應(yīng)用

        3.1 SpringAOP技術(shù)簡(jiǎn)介

        SpringAop也是AOP技術(shù)中一種,屬于動(dòng)態(tài)形式AOP,其提供兩種方式來(lái)生成代理對(duì)象,JDKProxy和Cglib,具體那種方式生成有AopProxyFactory根據(jù)AdviseSupport對(duì)象的配置來(lái)決定,JDK代理只支持基于接口的代理,而不支持基于類的代理。默認(rèn)的策略是如果目標(biāo)類是接口,則使用JDK動(dòng)態(tài)代理技術(shù),否則使用CGLIB來(lái)生成代理[12-13]。

        3.2 基于SpringAOP的事務(wù)管理的實(shí)現(xiàn)

        事務(wù)是訪問(wèn)數(shù)據(jù)庫(kù)的一個(gè)操作序列,數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)通過(guò)事務(wù)集來(lái)完成對(duì)數(shù)據(jù)庫(kù)的存取,事務(wù)管理模塊對(duì)于大型應(yīng)用系統(tǒng),尤其是并發(fā)性能強(qiáng)的實(shí)行系統(tǒng)極為重要,它是確定系統(tǒng)能夠正確穩(wěn)定運(yùn)行的關(guān)鍵,事務(wù)管理就是對(duì)一系列的數(shù)據(jù)庫(kù)操作進(jìn)行過(guò)統(tǒng)一的提交或回滾操作[14]。

        本系統(tǒng)的事務(wù)管理是采用基于JDK的動(dòng)態(tài)代理方法方式,引入 spring-aop.jar包,在 springmybatis.xml文件中配置<tx:annotation-driven transaction-manager="transactionManager"/>,因?yàn)椴捎玫氖荍DK動(dòng)態(tài)代理,所以@Transactional注解放在service層實(shí)現(xiàn)類與接口上都可以,一般放在實(shí)現(xiàn)類上[15],代理類實(shí)例代碼如下:

        這樣業(yè)務(wù)層被@Transactional注解過(guò)的類或方法進(jìn)行數(shù)據(jù)庫(kù)操作時(shí)都將調(diào)用數(shù)據(jù)庫(kù)的事務(wù)機(jī)制。

        采用CGLIB動(dòng)態(tài)代理技術(shù)實(shí)現(xiàn)系統(tǒng)事務(wù)管理功能的配置如下:

        首先在 springmvc.xml文件中配置<aop:aspectjautoproxy proxy-target-class="true"/>

        代碼,即將代理權(quán)由JDK代理交給CGLIB代理,再引用cglib的jar包即可,在基于CGLIB代理的AOP中@Transactional注解要寫(xiě)在具體類或類中方法之上,Spring使用CGLIB動(dòng)態(tài)代理,而內(nèi)部通過(guò)Cglib2AopProxy實(shí)現(xiàn)代理,通過(guò)DynamicAdvisedInterceptor進(jìn)行攔截:

        4 結(jié)束語(yǔ)

        面向切面編程方法廣泛應(yīng)用于具有橫切性質(zhì)的系統(tǒng)級(jí)服務(wù),很好的解決了橫切關(guān)注點(diǎn)問(wèn)題以及相關(guān)的設(shè)計(jì)難題,實(shí)現(xiàn)了松耦合的目的。通過(guò)AOP框架技術(shù)來(lái)實(shí)現(xiàn)調(diào)用方法時(shí)加入切面,在AOP框架中可以方便的使用預(yù)定義切入點(diǎn)來(lái)定義被調(diào)用的類和方法。在以后的內(nèi)容系統(tǒng)管理等各領(lǐng)域中,AOP技術(shù)會(huì)有更多的應(yīng)用。

        [1]魏文清,石亮紅,武寶珠.用AOP技術(shù)實(shí)現(xiàn)Web系統(tǒng)中的日志管理[J].江西科學(xué),2010,28(4):528-530.

        [2]李健,田立鋒,郭瑞.java SSH框架在java Web中的應(yīng)用[J].學(xué)術(shù)探討應(yīng)用技術(shù)與研究,2016,23(3):45-47.

        [3]王書(shū)懷,刑建春,李決龍,等.AOP技術(shù)在管理信息系統(tǒng)中的應(yīng)用研究[J].計(jì)算機(jī)應(yīng)用于軟件,2012,29(6):189-195.

        [4]薛冰.改進(jìn)AOP技術(shù)在軟件開(kāi)發(fā)中的應(yīng)用于研究[D].大連:大連交通大學(xué),2013.

        [5]劉旭斌,朱國(guó)斌,關(guān)培超,等.AOP在地理信息服務(wù)平臺(tái)日志系統(tǒng)中的應(yīng)用[J].地理空間信息,2014,12(4:)27-33.

        [6]彭雪昶,吳海,張淼.面向切面方法實(shí)現(xiàn)日志管理的研究與設(shè)計(jì)[J].數(shù)據(jù)庫(kù)與信息管理,2014,24(44):101-103.

        [7]多結(jié)仁欠.SSH框架技術(shù)在文件系統(tǒng)中的應(yīng)用研究[J].西藏大學(xué)現(xiàn)代教育技術(shù)中心,2011,34(31):56-59.

        [8]錢慎一,付中舉,林青.AOP技術(shù)在數(shù)據(jù)交換與共享系統(tǒng)中的應(yīng)用[J].鄭州輕工業(yè)學(xué)院學(xué)報(bào),2012,27(6):14-16.

        [9]王振智,王開(kāi)義,喻鋼.AOP技術(shù)在農(nóng)資信息管理平臺(tái)中的應(yīng)用[J].農(nóng)機(jī)化研究,2010,43(6):153-157.

        [10]王艷清,陳紅.基于SSM框架的只能Web系統(tǒng)研發(fā)設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2012,33(12):4752-4757.

        [11]Breivold H.A systematic review of software architecture evolution research [J].Infomation and Software Technolo-gy,2012:16-40.

        [12]孟若.基于AOP的Web服務(wù)演化方法[D].武漢:武漢工程大學(xué),2015.

        [13]陳寧,李星.基于AOP架構(gòu)的業(yè)務(wù)約束檢測(cè)[J].計(jì)算機(jī)工程與應(yīng)用,2012,48(22):74-78.

        [14]劉敏,陳寧,康迪,等.基于JAVA動(dòng)態(tài)代理的AOP實(shí)現(xiàn)機(jī)制[J].科研發(fā)展,2014,22(13):65.

        [15]王添財(cái).基于Java EE的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].廣州:華南理工大學(xué),2014.

        Log and transaction management in Web system based on Aspect-Oriented Programming

        TANG Nian-gang1,ZHANG Yong2
        (1.Wuhan Research Institute of Posts and Telecommunications,Wuhan 430070,China;2.The Wuhan Yangtze Communications Technology Co.Ltd,Wuhan 430070,China)

        A complete software project system is divided into core business concerns and system level aspects of concern,Using AOP technology can separate the business logic and system level logic in the Web system,To achieve the purpose of loose coupling.This paper firstly introduces the concept and principle of AOP technology,and then combined with a system example to introduce two kinds of AOP technology in the log management and transaction management of the application,and finally prove its feasibility.

        Web system; AOP technology; log management; transaction management

        TN01

        A

        1674-6236(2017)16-0042-04

        2016-07-20稿件編號(hào):201607144

        唐念剛(1991—),男,湖南永州人,碩士研究生。研究方向:通信與信息系統(tǒng),軟件設(shè)計(jì)。

        猜你喜歡
        事務(wù)管理切入點(diǎn)日志
        一名老黨員的工作日志
        扶貧日志
        心聲歌刊(2020年4期)2020-09-07 06:37:14
        游學(xué)日志
        慢病防控是深化醫(yī)改的切入點(diǎn)
        找準(zhǔn)切入點(diǎn) 扎實(shí)推進(jìn)改革
        新聞?dòng)浾咣`行“走轉(zhuǎn)改”的三個(gè)切入點(diǎn)
        新聞傳播(2015年15期)2015-07-18 11:03:44
        “見(jiàn)怪要怪”:輿論監(jiān)督報(bào)道的切入點(diǎn)
        新聞前哨(2015年2期)2015-03-11 19:29:24
        綜合事務(wù)管理
        江蘇年鑒(2014年0期)2014-03-11 17:09:25
        社會(huì)事務(wù)管理
        江蘇年鑒(2014年0期)2014-03-11 17:09:24
        經(jīng)濟(jì)事務(wù)管理
        江蘇年鑒(2014年0期)2014-03-11 17:09:22
        日韩人妻无码精品久久免费一 | 欧美孕妇xxxx做受欧美88| 极品 在线 视频 大陆 国产| 国产成人精品一区二区日出白浆| 国产一区二区三区激情视频| 亚洲avav天堂av在线网毛片| 亚洲国产精品自拍一区| 久草91这里只有精品| 在线观看国产视频你懂得| 男ji大巴进入女人的视频小说| 亚洲福利视频一区| 午夜日本精品一区二区| 亚洲综合一区二区三区天美传媒| 久久99精品九九九久久婷婷| 国产精选免在线观看| 亚洲黑寡妇黄色一级片| 老鲁夜夜老鲁| aaa级久久久精品无码片| 人妖另类综合视频网站| 亚洲人成精品久久熟女| 国产精久久一区二区三区| 大地资源中文第三页| 美女扒开内裤露黑毛无遮挡| 国产女主播一区二区三区| 亚洲人成网址在线播放| 久久国产精品视频影院| 白色月光免费观看完整版| 国产成人综合日韩精品无码| 午夜无码片在线观看影院| 亚洲综合久久一本久道| 玖玖色玖玖草玖玖爱在线精品视频| 奇米影视777撸吧| 99久久国产亚洲综合精品| 人日本中文字幕免费精品| 妺妺窝人体色www聚色窝仙踪| 久久精品中文字幕第23页| 精品粉嫩国产一区二区三区| 国产美女高潮流白浆免费视频| 999国内精品永久免费视频| 无码高清视频在线播放十区| 一本色道久久亚洲av红楼|