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

基于Velocity的代碼生成引擎的設計與實現*

2012-03-26 08:52:18薛召王晶李煒
電信工程技術與標準化 2012年8期
關鍵詞:引擎

薛召,王晶,李煒

(1 北京郵電大學網絡與交換技術國家重點實驗室,北京 100876;2 東信北郵信息技術有限公司,北京 100191)

一直以來,軟件工程界在如何減少軟件工程師的工作量和提高軟件產品的質量上做著不懈的探討和研究。近些年,一系列Web開發框架,如Struts、Hibernate和Spring等,都從軟件復用的角度成功地實現了減輕軟件設計和開發的負擔。這些框架均完成了底層邏輯代碼的復雜工作。然而,在實際的大型軟件系統或平臺的開發過程中,仍然有大量的上層業務邏輯是重復的,而且這部分的任務量也相當可觀,所以如何減少這部分的工作量就成了現階段軟件工程師需要解決的問題了。由于這些重復性的代碼在很大程度上是相似的,所以通過模板的方式來實現代碼自動生成的技術便應運而生[1]。

代碼生成技術是一個專注于解放代碼生產力,用程序來編程的研究方向,是MDA(模型驅動架構)思想的一個重要的技術基礎[2],同時,也是對軟件開發自動化的探索[3]。代碼生成技術可以幫助程序員完成枯燥且重復性的工作,提高軟件系統的健壯性和可維護性[4]。此外,也很容易進行擴展。

1 技術簡介

Velocity是一個基于Java的模板引擎,它可以獨立產生源代碼、HTML和報告,也可以和其它系統相結合提供模板服務[5]。它讓Web頁面設計者能使用簡單而功能強大的模板語言來引用Java代碼中定義的對象。作為Java代碼和網頁之間的分離層,其使得Web設計者和Java程序員可以根據MVC(Model View Controller)模塊并行設計一個Web站點,從而使得整個站點更容易維護。

2 代碼生成引擎的設計與實現

2.1 引擎結構

如圖1所示,該代碼生成引擎主要由3部分組成:注解解析模塊、Generator Engine和文件輸出系統。其輸入為標記有Struts2注解的系統平臺業務對象[6]的Java代碼文件,輸出為該對象對應的JSP頁面文件、業務邏輯層[7]Java文件、數據持久層[7]Java文件以及相應的Spring配置文件。執行流程為首先對包含注解的Java文件進行注解解析處理,獲得注解信息后,由GeneratorEngine根據注解信息從模板庫加載模板文件,然后通過文件輸出系統生成各種文件。

圖1 代碼生成引擎結構圖

該代碼生成引擎實現了模型驅動的開發模式,允許用戶在編寫完成多個業務對象之后,通過添加注解,統一生成頁面文件、業務邏輯層和數據持久層CRUD(Create、Read、Update和Delete)Java代碼和配置文件。

2.2 詳細設計與實現

2.2.1 注解解析模塊

圖2 注解解析模塊結構圖與UML圖

如圖2所示,注解解析模塊主要由注解掃描模塊、注解提取模塊和注解處理模塊組成。其涉及到的各個類主要為依賴關系。

注解掃描模塊會根據配置文件中的路徑去掃描相應的業務對象所在的源碼包,并掃描每一個業務對象類。若類中聲明了注解,則調用注解提取模塊提取業務對象上的注解。注解提取模塊提取到注解信息后,會調用注解處理模塊。然后,注解處理模塊會傳遞參數給GeneratorEngine,并委派其生成模板。

2.2.2 GeneratorEngine

代碼生成引擎的核心是GeneratorEngine,其對Velocity的常用接口進行了封裝。

圖3 GeneratorEngine執行流程

如圖3所示,GeneratorEngine生成代碼的主要執行流程為:

(1)創建一個VelocityEngine實例,設置其屬性,并完成初始化;

(2)創建一個VelocityContext實例;

(3)根據GeneratorEngine的參數,添加必要的數據到VelocityContext實例中;

(4)創建一個IO流實例用來輸出模板內容;

(5)獲取VM模板,通過Template類,并使用Velocity的getTemplate方法加載模板;

(6)合并模板和數據;

(7)調用文件輸出系統生成各種文件。

2.2.3 文件輸出系統

文件輸出系統首先檢查配置文件中的輸出文件路徑是否存在,若不存在則創建相應路徑;然后根據模板輸出各種文件。

3 結束語

本文描述的代碼生成引擎作為手動開發的一個補充,可以避免開發者在那些重復性的工作上浪費時間與精力,同時也可以消除由于失誤而產生的錯誤[8],提高了代碼質量。

目前,代碼生成技術雖受到越來越多的開發者和學者的關注,但發展仍然很不足。一方面的原因是,目前的技術僅能做到自動生成部分代碼,只是作為手動開發的一個補充。所以導致眾多開發者的熱情不是很高。但是隨著代碼生成技術的理論基礎的不斷發展,隨著業界實踐的不斷推動,未來能夠滿足自動生成大部分代碼乃至全部代碼的生成引擎終將會實現。希望這一天能夠早日到來。

[1]Toeppe,S.Automatic code generation requirements for production automotive powertrain applications[A].Proceedings of 1999 IEEE International Symposium on Computer Aided Control System Design[C].Kohala Coast,HI.Aug,1999: 200-206.

[2]盛剛,韓莉莉著.J2EE代碼自動生成研究[J].計算機系統應用.2006,(8): 31-33.

[3]Fang M,Ying J,Wu MH.A Template Engineering Based Framework for Automated Software Development[A].Proceedings of 10th International Conference on Computer Supported Cooperative Work in Design[C].Nanjing.May,2006: 1-6.

[4]Yang M H,Liao J X,Chen X.Performance analysis of service platform with unstructed supplementary service data[J].Journal of Beijing University of Posts and Telecommunications.Vol29,No5,Oct,2006: 93-97.

[5]李曉黎,張曉輝.Velocity網頁程序設計[M].北京:人民郵電出版社.2001,11.

[6]楊柳.應用服務器業務層框架的設計與實現[D].2012,03.北京郵電大學.

[7]Naji,H A H.Research and design of library information system based on three layers architecture[A].Information Engineering and Computer Science.2010 2nd International Conference[C].Wuhan.Dec,2010: 1-3.

[8]Whalen M W.On the requirements of high-integrity code generation[A].Proceedings of 4th IEEE International Symposium on High-Assurance Systems Engineering[C].Washington,DC.Nov,1999: 217-224.

猜你喜歡
引擎
以學促干 挺膺擔當 激活砥礪前行的紅色引擎
江陰市“三個創新”打造?;钒踩O管新引擎
新海珠,新引擎,新活力!
消費繼續發揮經濟增長第一引擎作用
消費導刊(2018年8期)2018-05-25 13:19:23
三生 三大引擎齊發力
藍谷: “涉藍”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
休閑垂釣 傳統漁業新引擎
中國水產(2017年2期)2017-02-25 07:56:29
信息化,“盛京”加速的新引擎
中國衛生(2015年4期)2015-11-08 11:16:18
無形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
基于Cocos2d引擎的PuzzleGame開發
主站蜘蛛池模板: 国产在线自揄拍揄视频网站| 亚洲视频影院| 亚洲国产精品一区二区高清无码久久| 亚洲欧洲日韩久久狠狠爱| 91精品视频在线播放| 免费人成黄页在线观看国产| 亚洲天堂久久新| 亚洲国产欧美国产综合久久 | 五月天在线网站| 国产精品亚欧美一区二区三区| 丰满人妻中出白浆| 国产va在线观看免费| 午夜免费视频网站| 无码一区二区波多野结衣播放搜索| 在线观看亚洲精品福利片| 91在线无码精品秘九色APP| 午夜国产小视频| 狠狠色狠狠综合久久| 女人毛片a级大学毛片免费| 免费看的一级毛片| 欧美一道本| 色婷婷亚洲综合五月| 久草视频福利在线观看| 亚洲 成人国产| 国产剧情国内精品原创| 国产在线第二页| 四虎免费视频网站| 美女国内精品自产拍在线播放| 欧美精品三级在线| 国产精品30p| 亚洲成人精品| 在线另类稀缺国产呦| 国产丰满大乳无码免费播放| 蜜桃视频一区| 综合色在线| 色综合久久无码网| 国产午夜无码专区喷水| 亚洲性影院| 亚洲一区国色天香| 亚洲系列无码专区偷窥无码| 114级毛片免费观看| 国产欧美日韩资源在线观看| 在线观看91精品国产剧情免费| 91精品最新国内在线播放| 国产亚洲精品yxsp| 一本大道东京热无码av | 91蝌蚪视频在线观看| 亚洲成人播放| 国产屁屁影院| 久久一本日韩精品中文字幕屁孩| 国产综合精品日本亚洲777| 丰满人妻被猛烈进入无码| 日韩成人免费网站| 亚洲首页在线观看| 国产特级毛片| 国产白浆视频| 亚洲男女在线| 欧美日韩va| 国产一区二区三区视频| 一区二区日韩国产精久久| 亚洲视频二| 国产欧美网站| 一级毛片免费高清视频| 国产成人无码久久久久毛片| 无码'专区第一页| 日韩高清无码免费| 亚洲欧美日韩另类| 综合网天天| 欧美精品影院| 国产成人综合亚洲欧美在| 澳门av无码| 亚洲免费三区| 精品国产一区91在线| 亚洲婷婷在线视频| 日本精品视频一区二区| 亚洲码一区二区三区| 国产女人18毛片水真多1| 国产伦精品一区二区三区视频优播 | 欧美日韩激情| 亚洲天堂日韩在线| 91无码国产视频| 国产麻豆福利av在线播放 |