彭玉華 劉濤
摘 要
本文針對Java EE多層體系結構、關鍵設計模式進行研究,采用構建輕量級J2EE框架所使用的Struts2、 Ibatis、Spring技術,該框架實現(xiàn)了表現(xiàn)邏輯和業(yè)務邏輯的分離,使系統(tǒng)具有較好的擴展性和可維護性。
【關鍵詞】Struts2 iBATIS Spring
1 引言
產品銷售是企業(yè)的生命線,對產品銷售數(shù)據(jù)進行管理分析,并以可視化的圖表方式展示產品銷售的各種數(shù)據(jù),為企業(yè)決策提供準確的參考依據(jù)。本文介紹了系統(tǒng)的需求、功能模塊劃分、技術架構等方案。
2 系統(tǒng)架構設計
本系統(tǒng)采用Java EE的多層結構,這些層次是:控制層、、持久層、領域模型層。 每層在應用程序中有各自的功能,不能與其他層功能耦合。
視圖層負責系統(tǒng)數(shù)據(jù)的顯示,它從業(yè)務層取得數(shù)據(jù)并顯示數(shù)據(jù)。當業(yè)務層變化時,將自動更新,并傳送給控制層。本系統(tǒng)采用Struts2實現(xiàn)MVC框架,視圖層由JSP結合Struts2 TagLib來實現(xiàn)。視圖層屬于MVC開發(fā)設計模式中“V”,Struts2框架是實現(xiàn)MVC模式的一個應用框架,它以WebWork的設計為核心,同時兼容Struts1.x。
控制層是MVC框架中的”C”,F(xiàn)ilterDispatcher是Struts2框架的核心控制器,主要負責攔截用戶請求。響應請求Struts2框架會依據(jù)struts.xml配置文件選擇相應的Action進行業(yè)務處理。
業(yè)務層主要負責實現(xiàn)系統(tǒng)的業(yè)務邏輯。EJB框架和Spring框架都可實現(xiàn)業(yè)務層,Spring框架與應用服務器整合的能力相對EJB3.0要弱,但是Spring框架模塊的可分離配置優(yōu)于EJB3.0的靈活性。
持久層主要負責與數(shù)據(jù)庫的交互,為業(yè)務層提供數(shù)據(jù)庫訪問功能。使用iBATIS提供的O/R Mapp映射機制,iBATIS通過在SQL開發(fā)的工作量和數(shù)據(jù)庫移植性上提供了很大的自由空間,本系統(tǒng)選擇采用iBATIS實現(xiàn)持久層。
領域模型層是ORM思想的產物,ORM用對象關聯(lián)數(shù)據(jù)表,將這些對象的集合歸為一個專門的層即領域模型層。它不再需要開發(fā)者建立和維護不必要的數(shù)據(jù)傳輸對象來匹配對應的領域對象,而且不需要附加編碼。
3 系統(tǒng)總體設計
產品銷售是企業(yè)經營過程中的一個重要環(huán)節(jié),通過產品銷售分析系統(tǒng),可以獲取各種產品銷售系統(tǒng),生成各種產品銷量和營業(yè)額的相關圖形,產品銷售系統(tǒng)分為產品管理、訂單管理和銷售分析3個模塊。產品管理可以添加、刪除、修改產品,維護企業(yè)的產品資源;訂單管理可以添加、刪除、修改訂單,維護企業(yè)的產品訂單;銷售分析是根據(jù)產品訂單數(shù)據(jù)生成各種產品銷售分析圖。
4 系統(tǒng)實現(xiàn)
4.1 iBATIS配置文件
根據(jù)系統(tǒng)需求分析,產品銷售分析系統(tǒng)需要實現(xiàn)產品維護、訂單維護以及各種銷售分析圖形的生成等功能。以產品銷售分析系統(tǒng)的訂單維護功能為例介紹有關配置。在iBATIS的SQL Map框架中,需要一個配置文件XML配置持久層框架信息,如配置數(shù)據(jù)庫連接JDBC、SQLMap映射文件的加載、SQL Map的配置和優(yōu)化設定。
4.2 Spring與iBATIS整合實現(xiàn)DAO
本系統(tǒng)框架中采用Spring整合iBATIS結合來實現(xiàn)系統(tǒng)的DAO層。DAO模式是Java EE核心設計模式,用來抽象和封裝所有對數(shù)據(jù)源的訪問。Spring對iBATIS整合后,對iBATIS的配置主要是對SqlMapClient節(jié)點的配置,實際上是配置了一個SqlMapClient的創(chuàng)建工廠類。本系統(tǒng)Spring的核心配置文件是/WEB-INF/spring-context/applicationContext.xml,系統(tǒng)通過在web.xml中配置Spring監(jiān)聽器來啟動Spring,Spring在web.xml中的配置。
系統(tǒng)啟動時通過ContextLoadListener初始化Spring容器。然后ContextLoaderListener監(jiān)聽器通過初始化參數(shù)connextConfigLocation找到配置文件applicationContext.xml并加載。
SqlMapClient節(jié)點配置中,configLocation屬性配置了iBATIS映射文件的路徑及名稱,dataSource屬性引入了數(shù)據(jù)源。
4.3 業(yè)務邏輯層設計與事務管理
業(yè)務邏輯層是系統(tǒng)架構中核心價值的部分,它主要實現(xiàn)業(yè)務規(guī)則制定、業(yè)務流程的實現(xiàn)等與業(yè)務需求有關的系統(tǒng)設計。系統(tǒng)業(yè)務邏輯層的設計,采用接口和實現(xiàn)分開的原則,業(yè)務邏輯組件接口定義該組件包含的功能,實現(xiàn)類提供該組件的實現(xiàn)。在輕量級JavaEE架構中,DAO組件將事務管理延遲到業(yè)務邏輯層管理。通過Spring的聲明式事務管理,讓業(yè)務邏輯層對象的方法具務事務性。
4.4 Spring與Struts2整合管理Action
本系統(tǒng)采用Spring IoC容器來管理業(yè)務邏輯組件,利用依賴注入為Action注入業(yè)務邏輯組件。Spring插件是通過覆蓋Struts2的ObjectFactory來增強核心框架對象的創(chuàng)建。當創(chuàng)建一個對象時,Spring插件會用Struts2配置文件中的class屬性去和Spring 配置文件中的id屬性進行關聯(lián),如果屬性名相同,則由Spring創(chuàng)建,否則由Struts2框架自身創(chuàng)建,最后由Spring來裝配。
4.5 Spring整合Log4j實現(xiàn)日志管理
Log4j是Apache的一個開源代碼項目,它提供了一種細膩的日志管理方式,通過一個配置文件,可以多選擇的控件每條日志的輸出格式和目的地;通過定義信息的級別,可靈活開關代碼中的反饋信息。通過Spring來使用Log4j,可以使Log4j的配置更簡單靈活。
5 總結
本文主要介紹該系統(tǒng)各個功能劃分,系統(tǒng)框架整合,在該整合框架中如何實現(xiàn)產品維護、訂單維護和生成銷售分析圖等功能。
參考文獻
[1]梁建全,周力,孟志勇,田利軍.輕量級javaEE框架整合方案[M].北京:人民郵電出版社,2008.
[2]葉健毅.javaEE Eclipse Struts2 Hibernate Spring框架整合應用案例(第2版)[M].北京:人民郵電出版社,2009.
作者單位
1.武昌理工學院 信息工程學院 湖北省武漢市 430223
2.武昌理工學院 信息工程學院計算機科學與技術1201班 湖北省武漢市 430223endprint