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.

猜你喜歡
引擎
以學促干 挺膺擔當 激活砥礪前行的紅色引擎
江陰市“三個創新”打造危化品安全監管新引擎
新海珠,新引擎,新活力!
消費繼續發揮經濟增長第一引擎作用
消費導刊(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開發
主站蜘蛛池模板: 99热在线只有精品| 亚洲天堂日本| 毛片免费在线| 国产在线视频自拍| 欧美午夜小视频| 激情六月丁香婷婷四房播| 国产精品专区第一页在线观看| 国产精品网址在线观看你懂的| 久久久久久高潮白浆| 暴力调教一区二区三区| 人妻中文久热无码丝袜| 精品乱码久久久久久久| 国产杨幂丝袜av在线播放| 免费毛片全部不收费的| 欧美另类第一页| 欧洲高清无码在线| 男女性午夜福利网站| 美女视频黄频a免费高清不卡| 欧美精品另类| 婷婷激情亚洲| 亚洲综合婷婷激情| 中文字幕在线不卡视频| 成人91在线| 日韩精品成人网页视频在线| 91精品国产麻豆国产自产在线| 91亚洲免费视频| 国产成熟女人性满足视频| 欧美特黄一免在线观看| 欧美成人精品一区二区| 久久精品这里只有国产中文精品| 欧美日韩一区二区三区在线视频| 综合网天天| 欧美第二区| 一本大道香蕉高清久久| 久久婷婷综合色一区二区| 国产综合在线观看视频| 亚洲国产成人无码AV在线影院L| 国产特级毛片aaaaaa| 美女无遮挡拍拍拍免费视频| 国产青榴视频| 亚洲精品在线观看91| 91久久夜色精品国产网站| 亚洲成a人片在线观看88| 国产裸舞福利在线视频合集| 91久久国产综合精品女同我| 精品五夜婷香蕉国产线看观看| 超清无码一区二区三区| AV色爱天堂网| 久久久精品国产亚洲AV日韩| 日韩无码真实干出血视频| 国产精品第一区| 亚洲成人黄色在线| 国产精品99r8在线观看| 亚洲成a人在线观看| 被公侵犯人妻少妇一区二区三区 | 无码久看视频| 精品福利视频导航| 国产H片无码不卡在线视频| 亚洲资源站av无码网址| 日韩毛片免费| 91成人免费观看| 在线亚洲精品自拍| 国产成熟女人性满足视频| 欧美色图久久| yjizz视频最新网站在线| 国产精品自在自线免费观看| 99久久亚洲精品影院| 亚洲有码在线播放| 日本成人不卡视频| 天天躁日日躁狠狠躁中文字幕| 国产女人水多毛片18| 日韩黄色在线| 国产精品欧美激情| 欧美日韩成人在线观看| 国产美女免费网站| 亚洲人成网7777777国产| 尤物亚洲最大AV无码网站| 国产一级无码不卡视频| 欧美a网站| 久久鸭综合久久国产| 国产丰满成熟女性性满足视频| 久久国产亚洲偷自|