Spring框架概述


 Spring框架包含許多特性,並被很好地組織在下圖所示的六個模塊中。本節將依次介紹每個模塊.


Core 封裝包是框架的最基礎部分,提供IoC和依賴注入特性。這裏的基礎概念是BeanFactory,它提供對Factory模式的經典實現來消除對程序性單例模式的需要,並真正地允許你從程序邏輯中分離出依賴關係和配置。

Context(上下文) 封裝包構築於Core封裝包的堅固基礎上:它提供了用一種框架風格的方式來訪問對象,有些像JNDI註冊表。Context封裝包繼承了beans包的功能,還增加了國際化(I18N)(用於規範resource bundle),事件傳播,資源裝載,以及透明創建上下文,例如通過servlet容器。

DAO 提供了JDBC的抽象層,它可消除冗長的JDBC編碼和解析數據庫廠商特有的錯誤代碼。 並且,JDBC 封裝包還提供了一種比編程性更好的聲明性事務管理方法,不僅僅是實現了特定接口,而且對所有的POJOs(plain old Java objects)都適用。

ORM 封裝包提供了常用的“對象/關係”映射APIs的集成層。 其中包括JPAJDOHibernateiBatis 。利用ORM封裝包,可以混合使用所有Spring提供的特性進行“對象/關係”映射,如前邊提到的簡單聲明性事務管理。

Spring的 AOP 封裝包提供了符合 AOP Alliance規範的面向方面的編程(aspect-oriented programming)實現,讓你可以定義,例如方法攔截器(method-interceptors)和切點(pointcuts),從邏輯上講,從而減弱代碼的功能耦合,清晰的被分離開。而且,利用source-level的元數據功能,還可以將各種行爲信息合併到你的代碼中,這有點象.Net的attribute的概念。

Spring中的 Web 包提供了基礎的針對Web開發的集成特性,例如多方文件上傳,利用Servlet listeners進行IoC容器初始化和針對Web的application context。當與WebWork或Struts一起使用Spring時,這個包使Spring可與其他框架結合。

Spring中的 MVC 封裝包提供了Web應用的Model-View-Controller(MVC)實現。Spring的MVC框架並不是僅僅提供一種傳統的實現,它提供了一種 清晰的 分離模型,在領域模型代碼和web form之間。並且,還可以藉助Spring框架的其他特性。

使用場景

藉助搭積木方式來解釋一下各種情景下使用Spring的情況,從簡單的Applet一直到完整的使用Spring的事務管理功能和Web框架的企業應用。



 通過用Spring的 聲明事務管理特性,Web應用可以做到完全事務性,就像使用EJB提供的那種容器管理的事務一樣。 所有自定義的業務邏輯可以通過簡單的POJO來實現,並利用Spring的IoC容器進行管理。對於其他的服務,比如發送email和不依賴web層的校驗信息,還可以讓你自己決定在哪裏執行校驗規則。 Spring本身的ORM支持可以和JPA、Hibernate、JDO以及iBatis集成起來,例如使用Hibernate,你可複用已經存在的映射文件與標準的Hibernate SessionFactory 配置。用控制器去無縫整合web層和領域模型,消除對 ActionForms 的依賴,或者避免了其他class爲領域模型轉換HTTP參數的需要



 

有的時候,現有情況不允許你徹底地從一種框架切換到另一種框架。然而,Spring卻 不需要 強制你使用它的全部,Spring不是一種 全有全無 的解決方案。 如果,現有的應用使用了WebWork、Struts、Tapestry或其他的UI框架作爲前端程序,完全可以只與Spring的事務特性進行集成。 只需要使用 ApplicationContext 來掛接你的業務邏輯和通過 WebApplicationContext 來集成你的web層前端程序。


當你需要通過WebService來訪問你的現有代碼時,你可使用Spring提供的 Hessian-Burlap-Rmi- 爲前綴的接口或者 JaxRpcProxyFactory 這個代理類。你會發現,遠程訪問現有應用程序不再那麼困難了。


Spring還爲EJB提供了 數據訪問和抽象層,讓你可以複用已存在的POJO並將他們包裝在無狀態SessionBean中,以便在可能需要聲明式安全(EJB中的安全管理,譯者注)的非安全的Web應用中使用。


 
 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章