摘要:在這篇文章里,將要對基于Spring的輕量級框架做一個簡單的介紹。介紹Spring框架的一些基本概念。設計了基于Spring的輕量級JavaEE應用的設計方案。讓讀者了解使用輕量級框架開發(fā)JavaEE應用。
關鍵詞:Spring;輕量級框架;JavaEE
中圖分類號:TP31 文獻標識碼:A文章編號:1009-3044(2008)20-30275-02
Spring Based Lightweight Frameworks JavaEE Application and Development
LIU Zhi-liang1,2, LIU Yuan-yuan1,2
(1.The College of Electrical Engineering Information Techology of China Three Gorges University, Yichang 443002,China; 2.Wuhan Vocational College of software and engineering, Wuhan 430205,China)
Abstract:This article is an overview of Spring based lightweight frameworks application. It introduces the concepts of Spring and lightweight frameworks. It’s design a solution to JavaEE application with Spring based lightweight frameworks. Thus to let you understand how to develop J2EE with Spring based lightweight frameworks.
Key words:POJO; lightweight framework; JavaEE
今天,越來越多的的企業(yè)開發(fā)人員希望能夠快速開發(fā)安全可靠的、可擴展的分布式企業(yè)應用,尤其是以瀏覽器為前端的Web應用。隨著企業(yè)應用的規(guī)模的快速增長,越來越多的企業(yè)將JavaEE平臺作為企業(yè)級開發(fā)的基礎。
1 傳統(tǒng)JavaEE開發(fā)模式
在JavaEE平臺誕生的日子里,JavaEE幾乎就是企業(yè)級開發(fā)的代名詞,當然作為JavaEE中最核心的EJB技術,也一度成為JavaEE應用的核心。EJB框架提供了大量的有用的服務和操作,簡化了分布式應用的開發(fā)時間。比如:EJB提供的聲明式事務:EJB容器為應用自動的開始、提交和回滾事務,使我們無須再編寫大量的事務管理代碼。另外使用企業(yè)級Java Bean(Enterprise Java Bean)完成業(yè)務邏輯能參與在遠程客戶端的分布式事務。EJB還能提供聲明式的安全機制,它讓我們幾乎可以不必寫再安全代碼。
然而,EJB在帶來了這些好處的同時,也帶來了不必要的復雜性:首先編寫EJB組件是復雜的,為了實現(xiàn)一個EJB組件,除了EJB本身的實現(xiàn)類外,還不得不編寫額外的接口。此外,部署和測試EJB也是非常復雜的事情。
2 基于Spring的輕量級JavaEE框架
隨著EJB帶來如此不必要的復雜,許多開發(fā)人員開始思索和反思,并試圖以更簡單的Java技術來簡化JavaEE的開發(fā)。Rod Johnson 總結了他數(shù)年的JavaEE項目經驗,提出了一系列以輕量級框架為核心的全新的JavaEE設計思想。并發(fā)展成為Spring框架。通過Spring這個輕量級框架,我們可以輕松的實現(xiàn)過去必須使用復雜而煩瑣的EJB才能實現(xiàn)的功能。更重要的是Spring拋棄了EJB這種重量級組件,以JavaBean作為實現(xiàn)輕量級框架的組件,使JavaEE的開發(fā)更加簡單,而且降低了應用的耦合。
Spring為企業(yè)開發(fā)提供了一個輕量級的解決方案。該方案包括:基于依賴注入的核心機制,基于AOP的聲明式事務管理與多種持久層技術的整合,以及優(yōu)秀的Web MVC框架等。
Spring為J2EE的業(yè)務邏輯層、表現(xiàn)層及數(shù)據持久層都提供了極好的解決方案,因為Spring不僅僅是一種框架,而且提供了一種企業(yè)級應用的開發(fā)規(guī)范。Spring是實際開發(fā)的抽象,其提供的模版設計大大簡化了應用的開發(fā)。
Spring的系列Template將通過步驟以優(yōu)雅的方式完成,留給開發(fā)者的僅僅是與特定應用相關的部分,從而大大提高了企業(yè)級應用的開發(fā)效率。
Spring支持對POJO的管理,能將J2EE的各層應用“焊接”在一起,甚至這些對象無需是標準的JavaBean。
3 構架性構架
基于Spring的輕量級JavaEE框架和傳統(tǒng)的JavaEE應用系統(tǒng)一樣,主要有三種核心構件:業(yè)務服務層,在成功的應用系統(tǒng)中,它占有最主導的地位;表示層:它可以是一個UI,也可以是一個遠程門面;數(shù)據訪問層:它管理對象的持久化。
3.1 業(yè)務服務層
一個成熟的架構中必須包含一個嚴格而完備的服務層,它是JavaEE應用的核心。從分層上看,業(yè)務服務層位于中間層次,這個層完成業(yè)務邏輯功能,并且把業(yè)務邏輯提供給客戶端(比如Web用戶界面或桌面用戶界面等)。在基于Spring的輕量級JavaEE框架中使用POJO構成服務層,它們運行在Spring輕量級容器中,由Spring來管理它們,這樣就能夠取代EJB原有的結構,而EJB大部分的復雜性。
3.2 數(shù)據訪問層
數(shù)據訪問層負責數(shù)據持久化以及對持久化數(shù)據的訪問。數(shù)據訪問層設計的目的是為系統(tǒng)提供一個獨立的、統(tǒng)一的、安全的、高效的數(shù)據持久機制,將復雜的業(yè)務邏輯和數(shù)據管理分開,從而降低系統(tǒng)的耦合度,提高系統(tǒng)的健壯、可維護性和可擴展性。傳統(tǒng)的JavaEE中數(shù)據訪問技術包括JDBC和entity bean。而我們的輕量級JavaEE框架推薦使用對象關系映射ORM(Object/Relational Mapping)持久化策略。現(xiàn)在有許多現(xiàn)有的O/R框架,比如Hibernate、iBatis等。Spring自身并沒有提供任何ORM方案,但Spring的ORM為集成許多流行的ORM框架提供了良好的支持,可以非常方便的將其納入到Spring的事務管理中。而且Spring DAO定義了一個訪問數(shù)據庫的一致的接口,大大提高了系統(tǒng)的開發(fā)效率。
3.3 表示層
表示層是系統(tǒng)和用戶交互的部分,最常見的就是通過Web界面提供企業(yè)服務。表示層向用戶展現(xiàn)了系統(tǒng)的功能,響應用戶的請求,并且向用戶層現(xiàn)處理結果。成熟的方式是通過MVC(模型-視圖-控制器)模式來組織表示層。分離用戶界面代碼和業(yè)務邏輯。然后通過控制器匹配視圖和模型,減少系統(tǒng)中的耦合。Spring提供一個全功能的MVC框架,供系統(tǒng)使用。另外Spring也可以很好的集成Struts、WebWork等當前流行的MVC框架。
上圖向我們展示了輕量級JavaEE構架方案。從上圖可以看到,輕量級容器是整個系統(tǒng)的核心。所有的Java類都運行在同一個虛擬機中。從用戶角度看,Web層是由MVC框架提供的。我們可是使用專用的MVC框架,比如Struts或WebWork或Spring自帶的MVC框架。業(yè)務對象是POJO,運行在輕量級容器里。AOP的攔截機制能夠增強業(yè)務對象,從而實現(xiàn)企業(yè)級服務,通過接口訪問業(yè)務對象。數(shù)訪問機制可以通過O/R映射實現(xiàn),該層能夠通過透明的持久化;如果O/R映射在某些情況下不能很好的應用,也可以使用JDBC實現(xiàn)。
4 結束語
即使擁有良好的工具和優(yōu)秀技術,應用軟件開發(fā)也是困難重重。應用開發(fā)往往牽扯到方方面面,每件事情都難以控制,而且,開發(fā)周期也很難把握(除非它的確是一個重量級的復雜應用,倒也有情可原)。Spring提供了一種輕量級的解決方案,用于建立“快裝式企業(yè)應用”。在此基礎上,Spring還提供了包括聲明式事務管理,RMI或Web Services遠程訪問業(yè)務邏輯,以及可以多種方法進行的持久化數(shù)據庫地解決方案。另外,Spring還有一個全功能的 MVC框架,并能透明的把 AOP 集成到你的軟件中去。你可以把Spring當作一個潛在的一站式企業(yè)應用。或者,把Spring看作一個標準開發(fā)組件,根據自己的需要,只取用它的部分組件使用而無需涉及其他。例如,你可以利用控制反轉容器在前臺的展現(xiàn)層使用Struts,還可以只使用 Hibernate集成編碼 或是 JDBC抽象層 去處理數(shù)據存儲。Spring被設計成(并將繼續(xù)保持)無侵入性的方式,意味著應用幾乎不需要對框架進行依賴(或根據實際使用的范圍,將依賴做到最小)。
筆者現(xiàn)在的JavaEE應用項目全部采用這種基于Spring的輕量級的JavaEE應用,實踐證明開發(fā)效率比以前提高了許多。除了上面介紹的基本框架之外,還應用到了使用Compass框架實現(xiàn)全文檢索功能,使用Acegi實現(xiàn)安全框架。
參考文獻:
[1] Rod Johnson.Expert One-on-One J2EE Design and Development[M].Indiana:Wiley publishing,Inc 2003.
[2] Rod Johnson.Expert One-on-One Development J2EE Without[M].Indiana:Wiley publishing,Inc 2004.
[3] 廖雪峰.Spirng2.0核心技術與最佳實踐[M].北京:電子工業(yè)出版社,2007.