劉亞男
摘要:本文首先介紹了EJB的概念和它的優(yōu)缺點,并通過分析JavaEE技術(shù)的大規(guī)模應(yīng)用帶給EJB的沖擊,指出EJB的缺陷。最后,總結(jié)出以后EJB的發(fā)展方向。
關(guān)鍵詞:EJB;spring
中圖分類號:G718 文獻標識碼:B 文章編號:1672-1578(2016)01-0379-01
EJB (Enterprise JavaBean)是JavaEE重要的組成部分,其定義和規(guī)定了一個用于開發(fā)基于組件的企業(yè)級多重應(yīng)用的標準。EJB需要嚴格地實現(xiàn)和繼承各種不同類型的接口,相類似的以及重復(fù)的代碼功能大量存在。同時EJB的配置也是非常復(fù)雜和繁瑣的,同樣通過JNDI進行目標對象查找的也是相當耗時。對于開發(fā)者學(xué)習(xí)EJB的需要高昂代價和成本,項目的具有極低的開發(fā)效率,應(yīng)用程序運行對資源消耗極高,這些缺點都造成了EJB的在使用中非常困難。
隨著JavaEE技術(shù)在不同領(lǐng)域大規(guī)模廣泛的應(yīng)用,同時EJB技術(shù)也受到很多的質(zhì)疑,EJB的使用給JavaEE應(yīng)用開發(fā)帶來了很大的開銷成本和開發(fā)上的復(fù)雜性。在EJB3.0發(fā)布之前,就是一個簡單的EJB組件都需要編程遠程/本地接口、Bean實現(xiàn)類以及Home接口,這使得其應(yīng)用受限。正是由于EJB應(yīng)用非常復(fù)雜,因此EJB也被稱為重量級組件。
為了克服重量級組件EBJ的缺陷,許多輕量級容器因此產(chǎn)生。輕量級容器,是因為它們能將簡單的、普通的JavaBean作為應(yīng)用組件,并通過IoC(Inversion of Control,控制反轉(zhuǎn))來解耦組件之間的依賴關(guān)系。隨著輕量級容器的大量的被應(yīng)用,開發(fā)者逐漸開始采用輕量級進行應(yīng)用程序的開發(fā)。Spring框架正是輕量級框架的代表,其著眼于JavaEE應(yīng)用開發(fā)的絕大多數(shù)方面,通過其分層架構(gòu),并針對它們提供了集成的框架和一攬子解決方案。Spring在數(shù)據(jù)庫管理、事務(wù)管理、持久化管理、線程管理、遠程調(diào)用等方面用輕量級方案替代EJB。Spring獨立于各種應(yīng)用服務(wù)器,它是一個開源的組件,我們可以把它視作一個容器,它可以在無應(yīng)用服務(wù)器支持的情況下提供應(yīng)用服務(wù)功能,如聲明式的事務(wù)、持久化等。
Spring框架通過IoC容器解決了組件相互的依賴關(guān)系,Spring的核心是輕量級IoC容器和AOP(Aspect Oriented Programming,面向切面編程),可以通過簡單的Java對象提供企業(yè)級的服務(wù);通過AOP的聲明式的服務(wù),為允許應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級服務(wù)進行內(nèi)聚性的開發(fā)。這些簡單的服務(wù),可以實現(xiàn)系統(tǒng)開發(fā)的靈活性、可擴展性和無侵入性。
Spring在當前是一個著名的開源框架,它是在實現(xiàn)簡單的企業(yè)級系統(tǒng)開發(fā)應(yīng)運而生的。Spring框架包括很多應(yīng)用模塊,這些模塊在不同的層次進行擴展,下層為上層提供服務(wù)。分層架構(gòu)是框架的主要優(yōu)點之一,分層結(jié)構(gòu)可以允許開發(fā)者選擇不同的層進行使用不同的組件,同時為應(yīng)用系統(tǒng)開發(fā)提供集成的服務(wù)。Spring提供了JavaEE應(yīng)用的各層的完美解決方案,而不是只單純的服務(wù)于某一層。Spring為企業(yè)級應(yīng)用開發(fā)提供了"一站式"的解決方案,并貫穿常見的表現(xiàn)層、業(yè)務(wù)層和持久層[16]的支持。Spring框架包含常用組件的體系結(jié)構(gòu),Spring Framework架構(gòu)按功能被劃分為多個封裝的模塊。Spring模塊的之間的裝配十分靈活,在不同的應(yīng)用場合中,可以通過框架基于不同的子集模塊進行構(gòu)建。
Spring框架包含相互獨立存在的七個基本的模塊:
SpringCore:Spring框架的核心模塊。它提供基本的IoC容器的實現(xiàn),即依賴注入。
SpringDAO:提供JDBC的抽象層,能提供編程方式和聲明方式控制事務(wù),使得開發(fā)者不用去編寫非業(yè)務(wù)功能的JDBC代碼。JDBC DAO抽象層提供了有意義的異常層次結(jié)構(gòu),Spring DAO 中的面向 JDBC 異常繼承了通用的 DAO 異常層次結(jié)構(gòu),使得在使用過程中非常方便。
SpringContext:構(gòu)建在Core模塊之上,并對Core模塊的功能進行了擴張。同時提供了高級Spring IoC容器的實現(xiàn),提供了Bean的訪問方式,并且增加了用于系統(tǒng)資源定義、綁定、資源裝載、透明的裝載上下文方式和事件移值等重要功能。
SpringAOP:它建立了面向方面編程框架,實現(xiàn)了AOP聯(lián)盟定義的AOP編程實現(xiàn)。Spring AOP 模塊為基于 Spring 的應(yīng)用程序中的對象提供了事務(wù)管理服務(wù)[17]。
SpringORM:為當前流行的對象/關(guān)系映射框架(例如Hibernate、MyBatis以及JPA)提供集成。
SpringWeb:提供面向Web應(yīng)用集成的功能,同時將Spring作為這些Web框架(例如Struts、JSF等)的后端實現(xiàn)。
Spring Web MVC:該模塊提供MVC的實現(xiàn)機制,本框架是一個包含全部功能的可以構(gòu)建 Web 應(yīng)用程序的 MVC 優(yōu)秀實現(xiàn)。通過策略接口使得MVC 框架變成了可以高度可配置的,本框架實現(xiàn)了很多視圖技術(shù),常用的包括 JSP、iText 、Tiles、POI和Velocity。
以上各模塊以分層的方式進行組織,下面的模塊是服務(wù)上面的,上面的模塊依賴于下面的模塊,Spring Core模塊位于整個體系結(jié)構(gòu)的最底層,它是Spring Framework工作運作的基礎(chǔ)。
參考文獻:
[1] Flanagan D. JavaScript: the definitive guide[M]. " O'Reilly Media, Inc.", 2002.
[2] 吳曉明,潘永紅,謝惠芳. 基于jQuery的中南大學(xué)門戶網(wǎng)站W(wǎng)eb UI的實現(xiàn)[J]. 武漢大學(xué)學(xué)報(理學(xué)版),2012,S1:361-364.
[3] Bibeault B, Kats Y. jQuery in Action[M]. Dreamtech Press, 2008.
[4] 許曉曼,唐文忠. Java企業(yè)應(yīng)用系統(tǒng)框架的比較與選擇[J]. 計算機與信息技術(shù),2006,09:68-70.