999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

AOP技術在Web系統日志和事物管理中的應用

2018-01-08 22:08:08唐念剛
電子設計工程 2017年16期
關鍵詞:數據庫方法系統

唐念剛,張 勇

(1.武漢郵電科學研究院 湖北 武漢 430070;2.武漢長江通信智聯技術有限公司 湖北 武漢430070)

AOP技術在Web系統日志和事物管理中的應用

唐念剛1,張 勇2

(1.武漢郵電科學研究院 湖北 武漢 430070;2.武漢長江通信智聯技術有限公司 湖北 武漢430070)

一個完整的軟件項目系統分為核心業務關注點與系統級的方面關注點,利用AOP技術可以在Web系統中將項目中的業務邏輯與系統級邏輯進行分離,達到松耦合的目的。文章首先介紹AOP技術的概念與原理,然后結合一個系統實例介紹兩種AOP技術分別在日志和事物管理中應用,并證明其可行性。

Web系統;AOP技術;日志管理;事物管理

當前,Web項目系統日趨復雜與龐大,應用也越來越廣泛,為目前最重要的基于文檔的分布式系統。

日志管理功能模塊在系統開發與應用中起著重要作用,系統日志管理可以記錄下系統進行的一系列行為信息,包括開發人員在開發過程中調試異常操作的信息數據,用戶在系統操作過程中記錄下的信息,提高了開發人員的開發效率,也提升了系統的安全性以及可操作性。事務管理模塊的作用是對系統數據庫操作進行統一的提交或回滾,以便服務器保持數據的完整性,事務管理模塊對于大型應用系統,尤其是并發性強的實時系統極為重要,保證系統能夠正確順利的運行。

傳統的日志與事務管理模塊的設計中代碼重復與代碼散亂給開發與維護帶來了較大的困難。以關注點分離為核心思想的面向切面編程技術(AOP)能很好的解決上述問題,利用AOP技術可以在Web系統中將項目中的業務邏輯與系統級邏輯進行分離,減少重復代碼,達到松耦合的目的[1]。

1 AOP技術概念與原理

1.1 AOP基本概念

AOP(Aspect Oriented Programming)即面向切面編程,可以將一些系統相關的工程,獨立提取出來,然后通過切面切入到系統,從而避免了在業務邏輯的代碼中混入過多的系統相關的代碼,比如事務管理、日志處理記錄等等,實現了系統松耦合的特點。AOP的幾個關鍵術語分別為:

1)連接點(Joint Point)是程序執行過程中可以切入的點,它可以是對一個函數的調用或者是對象的一個屬性。

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

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

4)Aspect(切面)它是切點與通知的結合,切入系統的一個切面,比如事務管理、日記管理等[2]。

1.2 AOP與OOP的區別與聯系

OOP(面向對象編程)借助于面向對象的分析、設計思想,開發人員可以將現實領域的實體轉換為軟件系統中的對象,OOP中一切事物皆對象的思想很好的應用于軟件系統中,但是其也有不足之處,OOP允許定義從左到右的關系,但例如日志記錄,事務管理,這些代碼水平的分布在所有對象的層次中,而與它所分布到的對象的核心功能毫無關系,在OOP設計中,它導致了大量的重復代碼的出現,不利于系統的維護。

AOP它是OOP技術的一種補充,它是利用一種稱為“橫切”的技術,剖開封裝對象的內部,并將那些影響了多個類的公共行為封裝到一個可以重用的模塊,命名為“Aspect”,即切面,意思是說將那些與業務邏輯無關的代碼,卻為業務模塊所共同調用的邏輯代碼封裝起來,以便減少系統的重復代碼,降低模塊間的耦合度,有利于系統和的可操作性與可維護性[3]。圖1是軟件系統的縱向與橫向結構圖。

圖1 系統實現AOP思想圖

切面與業務模塊是垂直的關系,我們關注的業務邏輯都是從前到后的整個生命周期的過程,而切面是橫切于各個業務功能模塊之上。

1.3 AOP的工作原理

AOP分為靜態AOP與動態AOP,靜態AOP是指在預編譯階段采用Aspect技術實現的AOP,它是將切面代碼直接編譯到java類文件中。動態AOP是指將切面代碼進行動態的織入實現的AOP。SpringAOP為動態的AOP,實現技術為JDK提供的動態代理技術和CGLIB(動態字節碼增強技術)。兩者實現技術不一樣,但都是基于代理模式,生成一個代理對象[4]。

2 AspectJ技術在Web系統的應用

2.1 AspectJ技術概述

AspectJ是一個基于java語言的AOP框架,提供了強大的AOP功能,其他很多AOP框架都借鑒后采納其中的一些思想。AspectJ是一種基于預編譯的AOP實現方式,即在編譯階段就對目標類進行修改,得到的class文件已經是被修改過的,生成靜態的AOP代理類,支持編譯時織入切面,即所謂的CTW 機制[5]。

2.2 基于AspectJ的日志管理的實現

在一個Web系統中,日志管理記錄是必不可少的,屬于系統級的交叉業務,我們可以將其放在切面中實現。由于日志文件提供的信息更方便程序開發人員查看程序異常,所以我們把系統的異常信息通過日志文件的形式進行輸出。下面,我們將結合道路運輸管理服務平臺系統管理員操作用戶模塊的實現來說明如何在Web系統應用AspectJ技術實現日志記錄的管理。

系統中我們需求是管理員在操作用戶模塊的時候要記錄管理員的操作記錄,記錄是哪個管理員增加修改刪除了內容,從而確定責任,一次需要對每條信息的增刪改行為進行日志記錄。日志系統需要記錄管理員的名字,操作時間,操作信息以及用戶數據信息以備后期查詢。

2.2.1 配置文件

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

2.2.2 定義切面

當啟動@AspectJ支持后,接下來定義切面類,添加@AspectJ,spring容器會自動識別該類作為切面類處理,添加@conponent,以便bean容器將該類掃描進去[7]。代碼如下:

定義對象yqUserMapper是為了操作數據庫,將管理員即將改變數據庫用戶的數據信息提取出來。

2.2.3 定義切入點

這里采用Annotation標注的通知方法定義切入點的,好處是其他通知可以共用這個切入點,定義pointcut,用于對service層中一某種命名規范開頭的方法進行攔截[8,9]。代碼如下:

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

圖2 切入點匹配規則表達式

2.2.4 定義通知

@Before表示目標方法執行前先執行該通知對應的方法,@Around表示目標方法執行前后執行該通知對應的方法,@After表示目標方法執行后執行該通知對應的方法,@AfterThrowing表示目標方法產生異常時執行該通知對應的方法[10,11]。

代碼示例如下:

2.2.5 攔截controller

由于本軟件系統的業務邏輯主要寫在controller層,如要攔截controller層中方法異常時執行異常通知,必須想辦法監聽controller層方法是否產生異常,切面類代碼如下:

3 SpringAOP技術在Web系統中的應用

3.1 SpringAOP技術簡介

SpringAop也是AOP技術中一種,屬于動態形式AOP,其提供兩種方式來生成代理對象,JDKProxy和Cglib,具體那種方式生成有AopProxyFactory根據AdviseSupport對象的配置來決定,JDK代理只支持基于接口的代理,而不支持基于類的代理。默認的策略是如果目標類是接口,則使用JDK動態代理技術,否則使用CGLIB來生成代理[12-13]。

3.2 基于SpringAOP的事務管理的實現

事務是訪問數據庫的一個操作序列,數據庫應用系統通過事務集來完成對數據庫的存取,事務管理模塊對于大型應用系統,尤其是并發性能強的實行系統極為重要,它是確定系統能夠正確穩定運行的關鍵,事務管理就是對一系列的數據庫操作進行過統一的提交或回滾操作[14]。

本系統的事務管理是采用基于JDK的動態代理方法方式,引入 spring-aop.jar包,在 springmybatis.xml文件中配置<tx:annotation-driven transaction-manager="transactionManager"/>,因為采用的是JDK動態代理,所以@Transactional注解放在service層實現類與接口上都可以,一般放在實現類上[15],代理類實例代碼如下:

這樣業務層被@Transactional注解過的類或方法進行數據庫操作時都將調用數據庫的事務機制。

采用CGLIB動態代理技術實現系統事務管理功能的配置如下:

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

代碼,即將代理權由JDK代理交給CGLIB代理,再引用cglib的jar包即可,在基于CGLIB代理的AOP中@Transactional注解要寫在具體類或類中方法之上,Spring使用CGLIB動態代理,而內部通過Cglib2AopProxy實現代理,通過DynamicAdvisedInterceptor進行攔截:

4 結束語

面向切面編程方法廣泛應用于具有橫切性質的系統級服務,很好的解決了橫切關注點問題以及相關的設計難題,實現了松耦合的目的。通過AOP框架技術來實現調用方法時加入切面,在AOP框架中可以方便的使用預定義切入點來定義被調用的類和方法。在以后的內容系統管理等各領域中,AOP技術會有更多的應用。

[1]魏文清,石亮紅,武寶珠.用AOP技術實現Web系統中的日志管理[J].江西科學,2010,28(4):528-530.

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

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

[4]薛冰.改進AOP技術在軟件開發中的應用于研究[D].大連:大連交通大學,2013.

[5]劉旭斌,朱國斌,關培超,等.AOP在地理信息服務平臺日志系統中的應用[J].地理空間信息,2014,12(4:)27-33.

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

[7]多結仁欠.SSH框架技術在文件系統中的應用研究[J].西藏大學現代教育技術中心,2011,34(31):56-59.

[8]錢慎一,付中舉,林青.AOP技術在數據交換與共享系統中的應用[J].鄭州輕工業學院學報,2012,27(6):14-16.

[9]王振智,王開義,喻鋼.AOP技術在農資信息管理平臺中的應用[J].農機化研究,2010,43(6):153-157.

[10]王艷清,陳紅.基于SSM框架的只能Web系統研發設計[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服務演化方法[D].武漢:武漢工程大學,2015.

[13]陳寧,李星.基于AOP架構的業務約束檢測[J].計算機工程與應用,2012,48(22):74-78.

[14]劉敏,陳寧,康迪,等.基于JAVA動態代理的AOP實現機制[J].科研發展,2014,22(13):65.

[15]王添財.基于Java EE的在線考試系統的設計與實現[D].廣州:華南理工大學,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稿件編號:201607144

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

猜你喜歡
數據庫方法系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
主站蜘蛛池模板: 国产一区二区精品高清在线观看 | 欧类av怡春院| 国产精品视频公开费视频| 思思热在线视频精品| 久久香蕉国产线看精品| 免费人成视网站在线不卡| 大陆国产精品视频| 国产视频只有无码精品| 55夜色66夜色国产精品视频| 亚洲欧美自拍中文| 天天摸夜夜操| 99热这里只有精品在线观看| 国产成人综合网| 国产精品人成在线播放| 91小视频版在线观看www| 大学生久久香蕉国产线观看| 亚洲精品制服丝袜二区| 香蕉蕉亚亚洲aav综合| 激情综合婷婷丁香五月尤物| 国产原创演绎剧情有字幕的| 中日韩一区二区三区中文免费视频| 亚洲91精品视频| 国产乱人乱偷精品视频a人人澡| 久久99蜜桃精品久久久久小说| 亚洲精品自产拍在线观看APP| 国产欧美日韩一区二区视频在线| 一级一级一片免费| 人人艹人人爽| 国产丝袜第一页| 精品综合久久久久久97超人| 精品一区二区三区水蜜桃| 香蕉在线视频网站| 区国产精品搜索视频| 欧美a在线| 国产在线视频欧美亚综合| 99在线视频精品| 欧美国产中文| 久久99国产乱子伦精品免| 日韩高清一区 | …亚洲 欧洲 另类 春色| 91无码视频在线观看| 99久久精品久久久久久婷婷| 亚洲第一天堂无码专区| 国内精自视频品线一二区| 中文字幕在线看视频一区二区三区| 四虎精品免费久久| 男女男免费视频网站国产| 国产91小视频| 欧美爱爱网| 国产精品福利尤物youwu| 亚洲区一区| 香蕉蕉亚亚洲aav综合| 国产日韩欧美一区二区三区在线 | 国产农村妇女精品一二区| 亚洲乱码精品久久久久..| 日本黄色a视频| 国产成人精品一区二区免费看京| 久久亚洲国产最新网站| 日韩在线网址| 国产激爽大片在线播放| 天天爽免费视频| 国产一级在线观看www色| 无码综合天天久久综合网| 久久国产免费观看| 欧美一级夜夜爽| 国产欧美视频综合二区| 成人年鲁鲁在线观看视频| 天天综合网亚洲网站| 97人妻精品专区久久久久| 婷婷色丁香综合激情| 免费国产一级 片内射老| 国产一区二区在线视频观看| 国产主播在线一区| 99re免费视频| 亚洲中文字幕国产av| 亚洲天堂伊人| 亚洲精品无码日韩国产不卡| 国产精品女在线观看| 亚洲国产中文欧美在线人成大黄瓜| 97青草最新免费精品视频| 深爱婷婷激情网| 日韩专区欧美|