导航

    <#CACHE_INCLUDE_NAVBAR#>
« CIW認證體系講解Cisco路由器常見十大問題經典解答 »

Java EE開發四大常用框架

2011年2月28日 SUN 0条评论 0个引用

Struts是壹個基於Sun Java EE平臺的MVC框架,主要是采用Servlet和JSP技術來實現的。
    Struts框架可分為以下四個主要部分,其中三個就和MVC模式緊密相關:
    1、模型 (Model),本質上來說在Struts中Model是壹個Action類(這個會在後面詳細討論),開發者通過其實現商業邏輯,同時用戶請求通過控制器(Controller)向Action的轉發過程是基於由struts-config.xml文件描述的配置信息的。
    2、視圖(View),View是由與控制器Servlet配合工作的壹整套JSP定制標簽庫構成,利用她們我們可以快速建立應用系統的界面。
    3、控制器(Controller),本質上是壹個Servlet,將客戶端請求轉發到相應的Action類。
    4、壹堆用來做XML文件解析的工具包,Struts是用XML來描述如何自動產生壹些JavaBean的屬性的,此外Struts還利用XML來描述在國際化應用中的用戶提示信息的(這樣壹來就實現了應用系統的多語言支持)。
    Spring
    Spring是輕量級的Java EE應用程序框架。
    Spring的核心是個輕量級容器(container),實現了IoC(Inversion of Control)模式的容器,Spring的目標是實現壹個全方位的整合框架,在Spring框架下實現多個子框架的組合,這些子框架之間彼此可以獨立,也可以使用其它的框架方案加以替代,Spring希望提供one-stop shop的框架整合方案 。
    Spring不會特別去提出壹些子框架來與現有的OpenSource框架競爭,除非它覺得所提出的框架夠新夠好,例如Spring有自己的 MVC框架方案,因為它覺得現有的MVC方案有很多可以改進的地方,但它不強迫您使用它提供的方案,您可以選用您所希望的框架來取代其子框架,例如您仍可以在Spring中整合您的Struts框架 。
    Spring的核心概念是IoC,IoC的抽象概念是「依賴關系的轉移」,像是「高層模組不應該依賴低層模組,而是模組都必須依賴於抽象」是 IoC的壹種表現,「實現必須依賴抽象,而不是抽象依賴實現」也是IoC的壹種表現,「應用程序不應依賴於容器,而是容器服務於應用程序」也是IoC的壹種表現。
    Spring的架構性的好處
    Spring能有效地組織妳的中間層對象,無論妳是否選擇使用了EJB。如果妳僅僅使用了Struts或其他的包含了Java EE特有APIs的framework,妳會發現Spring關註了遺留下的問題。
    Spring能消除在許多工程上對Singleton的過多使用。根據我的經驗,這是壹個主要的問題,它減少了系統的可測試性和面向對象特性。
    Spring 能消除使用各種各樣格式的屬性定制文件的需要,在整個應用和工程中,可通過壹種壹致的方法來進行配置。曾經感到迷惑,壹個特定類要查找迷幻般的屬性關鍵字或系統屬性,為此不得不讀Javadoc乃至源編碼嗎?有了Spring,妳可很簡單地看到類的JavaBean屬性。倒置控制的使用(在下面討論)幫助完成這種簡化。Spring能通過接口而不是類促進好的編程習慣,減少編程代價到幾乎為零。
    Spring被設計為讓使用它創建的應用盡可能少的依賴於他的APIs。在Spring應用中的大多數業務對象沒有依賴於Spring。
    使用Spring構建的應用程序易於單元測試。
    Spring能使EJB的使用成為壹個實現選擇,而不是應用架構的必然選擇。妳能選擇用POJOs或local EJBs來實現業務接口,卻不會影響調用代碼。
    Spring幫助妳解決許多問題而無需使用EJB。Spring能提供壹種EJB的替換物,它們適於許多web應用。例如,Spring能使用AOP提供聲明性事務而不通過使用EJB容器,如果妳僅僅需要與單個的數據庫打交道,甚至不需要JTA實現。
    Spring為數據存取提供了壹致的框架,不論是使用JDBC或O/R mapping產品(如Hibernate)。
    Spring確實使妳能通過最簡單可行的解決辦法解決妳的問題。這些特性是有很大價值的。
    Spring能做什麽?
    Spring提供許多功能,在此我將快速地依次展示其各個主要方面。
    任務描述:
    首先,讓我們明確Spring範圍。盡管Spring覆蓋了許多方面,但我們已經有清楚的概念,它什麽應該涉及和什麽不應該涉及。
    Spring的主要目的是使Java EE易用和促進好編程習慣。
    Spring 不重新開發已有的東西。因此,在Spring中妳將發現沒有日誌記錄的包,沒有連接池,沒有分布事務調度。這些均有開源項目提供(例如 Commons Logging 用來做所有的日誌輸出,或Commons DBCP用來作數據連接池),或由妳的應用程序服務器提供。因為同樣的的原因,我們沒有提供O/R mapping層,對此,已有有好的解決辦法如Hibernate和JDO。
    Spring的目標是使已存在的技術更加易用。例如,盡管我們沒有底層事務協調處理,但我們提供了壹個抽象層覆蓋了JTA或任何其他的事務策略。
    Spring沒有直接和其他的開源項目競爭,除非我們感到我們能提供新的壹些東西。例如,象許多開發人員,我們從來沒有為Struts高興過,並且感到在MVC web framework中還有改進的余地。在某些領域,例如輕量級的 IoC容器和AOP框架,Spring有直接的競爭,但是在這些領域還沒有已經較為流行的解決方案。(Spring在這些區域是開路先鋒。)

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最近发表

Powered By Z-Blog 1.8 Arwen Build 81206