賈艷波
摘要:該文應用Spring3框架及Spring自己的Spring MVC、Spring JPA等組件技術(shù),結(jié)合freeMarker和jfreeChart技術(shù),設(shè)計和開發(fā)了一個風電場功率預測Web系統(tǒng)。對于應用Spring3技術(shù)在提高系統(tǒng)的開發(fā)效率,提供更穩(wěn)定的系統(tǒng)性能,有利于后期的維護和更新等企業(yè)級web應用開發(fā)實踐中有一定的借鑒作用。
關(guān)鍵詞:Web系統(tǒng);風電功率預測; Spring 3
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2014)12-2747-03
Web System Based on Spring3 for Wind Farm Power Prediction
JIA Yan-bo
(Beifang University of Nationalities, Yinchuan 750021, China)
Abstract: In this paper, a web system for Wind farm power prediction is presented. By using annotation-based Spring 3 platform, and that own Spring MVC、Spring JPA and other component technologies,combined FreeMarker and JFreechart techmology, process of web design is simplified and quickly finished. In addition, the web system can be easily maintained and expanded.
Key words: web system; wind farm prediction; Spring 3
隨著Internet網(wǎng)絡(luò)技術(shù)的飛速發(fā)展, Web技術(shù)的成熟,為如今復雜的企業(yè)級應用提供了便利,其探討的熱點是如何建立開發(fā)更便捷、功能更強大、應用更靈活的Web應用。近年來SSH框架(即“Spring+struts+Hibernate”框架)就是比較流行的企業(yè)級開發(fā)框架。這種框架各取三種技術(shù)的優(yōu)勢,在簡化開發(fā)的同時也帶來了諸如初期學習框架困難、系統(tǒng)各層協(xié)調(diào)復雜等問題。
“輕量級容器架構(gòu)”Spring以其易用性,擴展性和整合性,已經(jīng)成為事實上的Java應用開發(fā)平臺。Spring是一個輕量級的控制反轉(zhuǎn)(IOC)和面向切面(AOP)的容器框架,是Java一站式輕量級平臺的無冕之王。它全面減輕了構(gòu)建多層web應用的負擔,提供可復用的軟件框架。
Spring自己提供了一個完整的類似于Struts,WebWork的MVC框架,它比使用其他的MVC框架的一個好處是可以更好地應用Spring容器提供的底層功能,且很好地體現(xiàn)了Spring框架的設(shè)計目標就是簡化Java企業(yè)應用的開發(fā)。Spring MVC是非常優(yōu)秀的MVC框架,尤其是2009年在3.0版本發(fā)布后,現(xiàn)在有越來越多的團隊選擇了Spring3 MVC了。Spring3 MVC結(jié)構(gòu)簡單,正應了那句話簡單就是美;而且它強大不失靈活,性能也很優(yōu)秀。它采用了松耦合可插拔組件結(jié)構(gòu),比其他MVC框架更具擴展性和靈活性。Spring3 MVC通過一套MVC注解,讓POJO成為處理請求的控制器,無須實現(xiàn)任何接口;同時,Spring3 MVC還支持REST風格的URL請求:注解驅(qū)動及REST風格的Spring3 MVC是Spring3.0最出彩的功能之一。此外,Spring3 MVC在數(shù)據(jù)綁定、視圖解析、本地化處理及靜態(tài)資源處理上都有許多不俗的表現(xiàn)。它在框架設(shè)計、擴展性、靈活性等方面全面超越了Struts、WebWork等MVC框架,從原來的追趕者一躍成為MVC的領(lǐng)跑者。
在Spring 中集成了來自 EJB 3.0 和 Java EE5 規(guī)范的 JPA 持久性棧,使之成為 Spring 支持數(shù)據(jù)庫訪問的最簡單而且也是標準的方式。這使得Spring 框架可以不在需要通過其他對象到關(guān)系的映射(ORM)技術(shù),如Hibernate來支持持久性。Spring支持JPA,這使得為關(guān)系數(shù)據(jù)庫編寫、讀取、搜索、更新和刪除對象(POJO)的煩瑣工作變得透明??梢岳^續(xù)使用 Java 語言面向?qū)ο蟮恼Z法處理 POJO,JPA ORM 層負責數(shù)據(jù)庫表的創(chuàng)建、查詢、更新代碼和刪除代碼。除了透明的數(shù)據(jù)庫操作,Spring的JPA支持還把各種五花八門的特定于數(shù)據(jù)庫廠商的異常轉(zhuǎn)換成一套定義良好的異常,使得異常處理代碼大為簡化。
1 系統(tǒng)的架構(gòu)
風電功率預測web展示系統(tǒng)采用多層架構(gòu)模型,分別為Web層、服務層、模型層、數(shù)據(jù)層等,如圖1所示。
圖1中Web開發(fā)框架選用Spring自帶的Web框架技術(shù):基于注解Spring 3 MVC的框架。持久化層采用Spring JPA,具有基于元數(shù)據(jù)注解、面向?qū)ο蟮牟樵冋Z言等簡化系統(tǒng)的數(shù)據(jù)持久化編程。為了系統(tǒng)安全問題,我們在系統(tǒng)中采用Spring Security技術(shù),對用戶進行認證和權(quán)限管理等Web安全性實現(xiàn)。這正是基于Spring技術(shù)的優(yōu)勢,簡單性的體現(xiàn)。
2 系統(tǒng)分層設(shè)計
2.1 model模型層設(shè)計
模型層主要設(shè)計POJO類。下面是本系統(tǒng)模型層業(yè)務實現(xiàn)所設(shè)計的主要POJO類,其關(guān)系類圖如圖2所示:
所有類均實現(xiàn)了Serializable接口。
1)Powerprediction4h:4小時功率預測數(shù)據(jù)PO類
2)Powerprediction72h:72小時功率預測數(shù)據(jù)PO類endprint
3)Powerrealtime:功率實時數(shù)據(jù)PO類
4)Weatherprediction:氣象預測數(shù)據(jù)PO類
5)Weatherrealtime:氣象實時數(shù)據(jù)PO類
6)System:系統(tǒng)數(shù)據(jù)PO類
POJO類(Plain Old Java Objects)作為JPA PO的持久化類,為Service層(服務層)調(diào)用操作數(shù)據(jù)庫。POJO類作為JPA PO的持久化類由兩部分組成::持久化類與注釋,屬性和數(shù)據(jù)表的列一一對應。它們通過持久化類上的注釋負責把持久化類映射到數(shù)據(jù)表,并將持久化類的屬性映射到數(shù)據(jù)列。注釋采用“at”標記形式(@ ),后面是注釋名稱。屬性映射采用在持久化類的屬性getter方法上進行標記,如在Weatherprediction類的id屬性getter方法上標記@ id,定義了持久化類的主鍵信息,@GeneratedValue標記用來制定主鍵的生成策略。相對于別的ORM框架傳統(tǒng)模式的xml文件配置,注釋具有如描述符大量減少、編譯期校驗等不少優(yōu)點。
2.2服務層設(shè)計
服務層通過封裝實體管理類完成商業(yè)邏輯,Web層通過調(diào)用服務類完成各模塊的業(yè)務。所有服務類通過調(diào)用實體管理類操作持久化對象。Service層的設(shè)計的服務類在系統(tǒng)的主要功能是根據(jù)上層業(yè)務需要通過Spring JPA對數(shù)據(jù)進行各種查詢。所以它的主要實現(xiàn)代碼實質(zhì)是使用JPA的HQL查詢語言實現(xiàn)。如功率預測模塊的服務類 PowerdataService。其類圖如圖3所示。所有服務類通過調(diào)用實體管理類操作持久化對象。
PowerdataService類:提供了對功率數(shù)據(jù)72小時主鍵查詢、4小時主鍵查詢、未來72小時預測數(shù)據(jù)查詢、未來24小時預測數(shù)據(jù)查詢、未來4小時預測數(shù)據(jù)查詢、24小時實時數(shù)據(jù)查詢、4小時實時數(shù)據(jù)查詢、實時歷史數(shù)據(jù)查詢以及4小時和72小時數(shù)據(jù)更新等操作。
從以上類的結(jié)構(gòu)我們可以看到,Service層的設(shè)計的服務類在系統(tǒng)的主要功能是根據(jù)上層業(yè)務需要通過Spring JPA對數(shù)據(jù)進行各種查詢。所以它的主要實現(xiàn)代碼實質(zhì)是使用JPA的HQL查詢語言實現(xiàn)數(shù)據(jù)庫查詢。
2.3 控制和視圖層設(shè)計
控制和視圖層采用FreeMarker設(shè)計視圖顯示模板、用Java程序準備要顯示的數(shù)據(jù),在本系統(tǒng)中這些Java程序還承擔了Control控制器類的角色。設(shè)計出的模板頁面和Java程序是一一對應的關(guān)系。FreeMarker是一個免費的模板引擎,使用純Java編寫,是一個基于模板生成文本輸出的通用工具。表1列出了本系統(tǒng)功率預測數(shù)據(jù)顯示功能所需的模板頁面及其對應的Java程序。
3 采用JFreeChart技術(shù)展示風電功率預測數(shù)據(jù)
風電場功率預測Web系統(tǒng)的界面展示大多需以各種圖表展示,故本系統(tǒng)采用JFreeChart來開發(fā)各種各樣的圖表作為Java程序要準備的數(shù)據(jù)。系統(tǒng)中主要使用JFreeChart生成4h、24h、72h、實時等功率數(shù)據(jù)的折線圖,生成風速序列圖、風向玫瑰圖、風廓線等,以及生成濕度、溫度、氣壓等時間序列圖,作為FreeMarker的數(shù)據(jù)準備。如圖4所示是一個采用JFreeChart技術(shù)生成的風速預測24小時時序圖。
4 結(jié)論
采用基于Spring框架,整合FreeMarker、JFreeChart等技術(shù)、以 JBOSS 作為 Web 服務器、ORACLE 作為后臺數(shù)據(jù)庫實現(xiàn)了風電場功率預測的Web系統(tǒng)。系統(tǒng)所開發(fā)的風電場功率預測Web系統(tǒng)基于當前最流行的基于注解的Spring3技術(shù),采用多層架構(gòu)設(shè)計,分解層與層之間的耦合,集成Spring框架中相關(guān)應用技術(shù),簡化了系統(tǒng)開發(fā),提高了系統(tǒng)開發(fā)效率和靈活性,同時有利于系統(tǒng)的進一步擴展和維護。目前,包括本系統(tǒng)在內(nèi)的整個風電場功率預測系統(tǒng)已投入到寧夏某風電場的試運行中。情況表明,系統(tǒng)的功能較完整、實用,具有良好的高效性、靈活性、擴展性和工程實用價值。
參考文獻:
[1] 耿天翔,丁茂生.寧夏電網(wǎng)風電功率預測系統(tǒng)開發(fā)[J].寧夏電力,2010(1).
[2] 孫衛(wèi)琴.精通Struts:基于MVC的java WEB設(shè)計與開發(fā)[M].北京:電子工業(yè)出版社,2004.
[3] 計文柯.Spring技術(shù)內(nèi)幕-深入解析Spring架構(gòu)與設(shè)計原理[M].2版.北京:機械工業(yè)出版社 2011.
[4] IBM[EB/OL].http://www.ibm.com/developerworks/cn/education/java/j-spring2/section7.html.
[5] 馬黎明.基于J2EE平臺的Web應用系統(tǒng)研究[D].武漢:武漢理工大學,2004.
[6] 陳雄華,林開雄.Spring 3.x企業(yè)應用開發(fā)實戰(zhàn)[M].北京:電子工業(yè)出版社,2012.
[7] Jiandong Mao, Xiaojing Zhang.Ultra-short-term wind power forecasting based on wavelet transform and BP neural network[C].2012 International Conference on Power Electronics Engineering and Computer Technology (PEECT 2012), 2012.endprint
3)Powerrealtime:功率實時數(shù)據(jù)PO類
4)Weatherprediction:氣象預測數(shù)據(jù)PO類
5)Weatherrealtime:氣象實時數(shù)據(jù)PO類
6)System:系統(tǒng)數(shù)據(jù)PO類
POJO類(Plain Old Java Objects)作為JPA PO的持久化類,為Service層(服務層)調(diào)用操作數(shù)據(jù)庫。POJO類作為JPA PO的持久化類由兩部分組成::持久化類與注釋,屬性和數(shù)據(jù)表的列一一對應。它們通過持久化類上的注釋負責把持久化類映射到數(shù)據(jù)表,并將持久化類的屬性映射到數(shù)據(jù)列。注釋采用“at”標記形式(@ ),后面是注釋名稱。屬性映射采用在持久化類的屬性getter方法上進行標記,如在Weatherprediction類的id屬性getter方法上標記@ id,定義了持久化類的主鍵信息,@GeneratedValue標記用來制定主鍵的生成策略。相對于別的ORM框架傳統(tǒng)模式的xml文件配置,注釋具有如描述符大量減少、編譯期校驗等不少優(yōu)點。
2.2服務層設(shè)計
服務層通過封裝實體管理類完成商業(yè)邏輯,Web層通過調(diào)用服務類完成各模塊的業(yè)務。所有服務類通過調(diào)用實體管理類操作持久化對象。Service層的設(shè)計的服務類在系統(tǒng)的主要功能是根據(jù)上層業(yè)務需要通過Spring JPA對數(shù)據(jù)進行各種查詢。所以它的主要實現(xiàn)代碼實質(zhì)是使用JPA的HQL查詢語言實現(xiàn)。如功率預測模塊的服務類 PowerdataService。其類圖如圖3所示。所有服務類通過調(diào)用實體管理類操作持久化對象。
PowerdataService類:提供了對功率數(shù)據(jù)72小時主鍵查詢、4小時主鍵查詢、未來72小時預測數(shù)據(jù)查詢、未來24小時預測數(shù)據(jù)查詢、未來4小時預測數(shù)據(jù)查詢、24小時實時數(shù)據(jù)查詢、4小時實時數(shù)據(jù)查詢、實時歷史數(shù)據(jù)查詢以及4小時和72小時數(shù)據(jù)更新等操作。
從以上類的結(jié)構(gòu)我們可以看到,Service層的設(shè)計的服務類在系統(tǒng)的主要功能是根據(jù)上層業(yè)務需要通過Spring JPA對數(shù)據(jù)進行各種查詢。所以它的主要實現(xiàn)代碼實質(zhì)是使用JPA的HQL查詢語言實現(xiàn)數(shù)據(jù)庫查詢。
2.3 控制和視圖層設(shè)計
控制和視圖層采用FreeMarker設(shè)計視圖顯示模板、用Java程序準備要顯示的數(shù)據(jù),在本系統(tǒng)中這些Java程序還承擔了Control控制器類的角色。設(shè)計出的模板頁面和Java程序是一一對應的關(guān)系。FreeMarker是一個免費的模板引擎,使用純Java編寫,是一個基于模板生成文本輸出的通用工具。表1列出了本系統(tǒng)功率預測數(shù)據(jù)顯示功能所需的模板頁面及其對應的Java程序。
3 采用JFreeChart技術(shù)展示風電功率預測數(shù)據(jù)
風電場功率預測Web系統(tǒng)的界面展示大多需以各種圖表展示,故本系統(tǒng)采用JFreeChart來開發(fā)各種各樣的圖表作為Java程序要準備的數(shù)據(jù)。系統(tǒng)中主要使用JFreeChart生成4h、24h、72h、實時等功率數(shù)據(jù)的折線圖,生成風速序列圖、風向玫瑰圖、風廓線等,以及生成濕度、溫度、氣壓等時間序列圖,作為FreeMarker的數(shù)據(jù)準備。如圖4所示是一個采用JFreeChart技術(shù)生成的風速預測24小時時序圖。
4 結(jié)論
采用基于Spring框架,整合FreeMarker、JFreeChart等技術(shù)、以 JBOSS 作為 Web 服務器、ORACLE 作為后臺數(shù)據(jù)庫實現(xiàn)了風電場功率預測的Web系統(tǒng)。系統(tǒng)所開發(fā)的風電場功率預測Web系統(tǒng)基于當前最流行的基于注解的Spring3技術(shù),采用多層架構(gòu)設(shè)計,分解層與層之間的耦合,集成Spring框架中相關(guān)應用技術(shù),簡化了系統(tǒng)開發(fā),提高了系統(tǒng)開發(fā)效率和靈活性,同時有利于系統(tǒng)的進一步擴展和維護。目前,包括本系統(tǒng)在內(nèi)的整個風電場功率預測系統(tǒng)已投入到寧夏某風電場的試運行中。情況表明,系統(tǒng)的功能較完整、實用,具有良好的高效性、靈活性、擴展性和工程實用價值。
參考文獻:
[1] 耿天翔,丁茂生.寧夏電網(wǎng)風電功率預測系統(tǒng)開發(fā)[J].寧夏電力,2010(1).
[2] 孫衛(wèi)琴.精通Struts:基于MVC的java WEB設(shè)計與開發(fā)[M].北京:電子工業(yè)出版社,2004.
[3] 計文柯.Spring技術(shù)內(nèi)幕-深入解析Spring架構(gòu)與設(shè)計原理[M].2版.北京:機械工業(yè)出版社 2011.
[4] IBM[EB/OL].http://www.ibm.com/developerworks/cn/education/java/j-spring2/section7.html.
[5] 馬黎明.基于J2EE平臺的Web應用系統(tǒng)研究[D].武漢:武漢理工大學,2004.
[6] 陳雄華,林開雄.Spring 3.x企業(yè)應用開發(fā)實戰(zhàn)[M].北京:電子工業(yè)出版社,2012.
[7] Jiandong Mao, Xiaojing Zhang.Ultra-short-term wind power forecasting based on wavelet transform and BP neural network[C].2012 International Conference on Power Electronics Engineering and Computer Technology (PEECT 2012), 2012.endprint
3)Powerrealtime:功率實時數(shù)據(jù)PO類
4)Weatherprediction:氣象預測數(shù)據(jù)PO類
5)Weatherrealtime:氣象實時數(shù)據(jù)PO類
6)System:系統(tǒng)數(shù)據(jù)PO類
POJO類(Plain Old Java Objects)作為JPA PO的持久化類,為Service層(服務層)調(diào)用操作數(shù)據(jù)庫。POJO類作為JPA PO的持久化類由兩部分組成::持久化類與注釋,屬性和數(shù)據(jù)表的列一一對應。它們通過持久化類上的注釋負責把持久化類映射到數(shù)據(jù)表,并將持久化類的屬性映射到數(shù)據(jù)列。注釋采用“at”標記形式(@ ),后面是注釋名稱。屬性映射采用在持久化類的屬性getter方法上進行標記,如在Weatherprediction類的id屬性getter方法上標記@ id,定義了持久化類的主鍵信息,@GeneratedValue標記用來制定主鍵的生成策略。相對于別的ORM框架傳統(tǒng)模式的xml文件配置,注釋具有如描述符大量減少、編譯期校驗等不少優(yōu)點。
2.2服務層設(shè)計
服務層通過封裝實體管理類完成商業(yè)邏輯,Web層通過調(diào)用服務類完成各模塊的業(yè)務。所有服務類通過調(diào)用實體管理類操作持久化對象。Service層的設(shè)計的服務類在系統(tǒng)的主要功能是根據(jù)上層業(yè)務需要通過Spring JPA對數(shù)據(jù)進行各種查詢。所以它的主要實現(xiàn)代碼實質(zhì)是使用JPA的HQL查詢語言實現(xiàn)。如功率預測模塊的服務類 PowerdataService。其類圖如圖3所示。所有服務類通過調(diào)用實體管理類操作持久化對象。
PowerdataService類:提供了對功率數(shù)據(jù)72小時主鍵查詢、4小時主鍵查詢、未來72小時預測數(shù)據(jù)查詢、未來24小時預測數(shù)據(jù)查詢、未來4小時預測數(shù)據(jù)查詢、24小時實時數(shù)據(jù)查詢、4小時實時數(shù)據(jù)查詢、實時歷史數(shù)據(jù)查詢以及4小時和72小時數(shù)據(jù)更新等操作。
從以上類的結(jié)構(gòu)我們可以看到,Service層的設(shè)計的服務類在系統(tǒng)的主要功能是根據(jù)上層業(yè)務需要通過Spring JPA對數(shù)據(jù)進行各種查詢。所以它的主要實現(xiàn)代碼實質(zhì)是使用JPA的HQL查詢語言實現(xiàn)數(shù)據(jù)庫查詢。
2.3 控制和視圖層設(shè)計
控制和視圖層采用FreeMarker設(shè)計視圖顯示模板、用Java程序準備要顯示的數(shù)據(jù),在本系統(tǒng)中這些Java程序還承擔了Control控制器類的角色。設(shè)計出的模板頁面和Java程序是一一對應的關(guān)系。FreeMarker是一個免費的模板引擎,使用純Java編寫,是一個基于模板生成文本輸出的通用工具。表1列出了本系統(tǒng)功率預測數(shù)據(jù)顯示功能所需的模板頁面及其對應的Java程序。
3 采用JFreeChart技術(shù)展示風電功率預測數(shù)據(jù)
風電場功率預測Web系統(tǒng)的界面展示大多需以各種圖表展示,故本系統(tǒng)采用JFreeChart來開發(fā)各種各樣的圖表作為Java程序要準備的數(shù)據(jù)。系統(tǒng)中主要使用JFreeChart生成4h、24h、72h、實時等功率數(shù)據(jù)的折線圖,生成風速序列圖、風向玫瑰圖、風廓線等,以及生成濕度、溫度、氣壓等時間序列圖,作為FreeMarker的數(shù)據(jù)準備。如圖4所示是一個采用JFreeChart技術(shù)生成的風速預測24小時時序圖。
4 結(jié)論
采用基于Spring框架,整合FreeMarker、JFreeChart等技術(shù)、以 JBOSS 作為 Web 服務器、ORACLE 作為后臺數(shù)據(jù)庫實現(xiàn)了風電場功率預測的Web系統(tǒng)。系統(tǒng)所開發(fā)的風電場功率預測Web系統(tǒng)基于當前最流行的基于注解的Spring3技術(shù),采用多層架構(gòu)設(shè)計,分解層與層之間的耦合,集成Spring框架中相關(guān)應用技術(shù),簡化了系統(tǒng)開發(fā),提高了系統(tǒng)開發(fā)效率和靈活性,同時有利于系統(tǒng)的進一步擴展和維護。目前,包括本系統(tǒng)在內(nèi)的整個風電場功率預測系統(tǒng)已投入到寧夏某風電場的試運行中。情況表明,系統(tǒng)的功能較完整、實用,具有良好的高效性、靈活性、擴展性和工程實用價值。
參考文獻:
[1] 耿天翔,丁茂生.寧夏電網(wǎng)風電功率預測系統(tǒng)開發(fā)[J].寧夏電力,2010(1).
[2] 孫衛(wèi)琴.精通Struts:基于MVC的java WEB設(shè)計與開發(fā)[M].北京:電子工業(yè)出版社,2004.
[3] 計文柯.Spring技術(shù)內(nèi)幕-深入解析Spring架構(gòu)與設(shè)計原理[M].2版.北京:機械工業(yè)出版社 2011.
[4] IBM[EB/OL].http://www.ibm.com/developerworks/cn/education/java/j-spring2/section7.html.
[5] 馬黎明.基于J2EE平臺的Web應用系統(tǒng)研究[D].武漢:武漢理工大學,2004.
[6] 陳雄華,林開雄.Spring 3.x企業(yè)應用開發(fā)實戰(zhàn)[M].北京:電子工業(yè)出版社,2012.
[7] Jiandong Mao, Xiaojing Zhang.Ultra-short-term wind power forecasting based on wavelet transform and BP neural network[C].2012 International Conference on Power Electronics Engineering and Computer Technology (PEECT 2012), 2012.endprint