Spring模塊簡述(摘自Spring in Action )

                                  (圖1)

Spring框架主要由這些模塊組成(圖1所示)。從整體上看,這些模塊爲你提供了開發企業級應用所需要的一切。但你不必將應用完全建立在Spring框架之上,你可以自由地選擇適合自己應用的模塊,而不使用其他模塊。事實上,Spring提供了與其他框架和庫的集成點,因此你可以自由使用。

就像你看到的,Spring的所有模塊都是建立在覈心容器之上的。容器規定如何創建、配置和管理Bean,以及很多Spring的具體細節。當你配置應用的時候,你就隱式地使用了這些類。作爲一名開發人員,你或許更關注那些提供服務的模塊。這些模塊提供了搭建你的應用所需要的服務,如AOP和持久層。

下面將逐個討論中所列出的Spring模塊。

 Spring由幾個位於核心容器之上的幾個模塊組成。這種模塊特性使得用戶可以根據需要靈活使用Spring框架

核心容器

圖1的最底層是核心容器。Spring核心容器爲Spring框架提供了基礎功能。在這個模塊中你會找到BeanFactory這個類,它是最基本的Spring容器和Spring的DI所依賴的基礎。

Application Context(上下文)模塊

Spring的應用上下文建立在覈心容器之上。如果說核心模塊中的BeanFactory使Spring成爲容器的話,那麼,上下文模塊就是使Spring成爲框架的原因。這個模塊擴展了BeanFactory,添加了對I18N(國際化)、應用生命週期事件以及驗證的支持。

另外,這個模塊提供了很多企業級服務,如電子郵件服務、JNDI訪問、EJB集成、遠程調用以及定時服務,並且支持與模板框架(如Velocity和FreeMarker)的集成。

Spring的AOP模塊

在AOP模塊中,Spring對面向切面編程提供了豐富的支持。這個模塊是爲Spring應用開發切面的基礎。與DI一樣,AOP支持應用對象之間的鬆耦合。利用AOP,應用程序所關心的與其應用的對象關係不大。

Spring的AOP模塊提供了多種方法來建立切面,包括基於AOP Alliance接口(http://aopalliance.sf.net)的切面的建立和對AspectJ的支持。

JDBC抽象及DAO模塊

編寫JDBC代碼時總是要寫一些樣板式的代碼,如:獲得連接、創建語句、處理結果、最後關閉連接。Spring的JDBC和DAO模塊把這些樣板式的代碼抽象出來,讓你的數據庫代碼變得簡單明瞭,也可以避免因爲釋放數據庫資源失敗而引起的問題。這個模塊還建立了一個容易理解的數據庫異常層,它建立在各種數據庫錯誤信息之上。以後就不用再去解釋那些隱晦專有的SQL錯誤信息了。

另外,這個模塊利用Spring的AOP模塊爲Spring應用中的對象提供事務管理服務。

ORM映射集成模塊

Spring爲那些喜歡使用ORM(object-relational mapping)工具的開發人員提供了ORM模塊。Spring的ORM支持建立在DAO支持之上,並可以方便地構建適合幾個ORM解決方案的DAO。Spring不想實現自己的ORM解決方案,但是它爲許多流行的ORM框架做了鉤子程序,包括Hibernate、Java Persistence API、JDO和iBATIS SQL映射。Spring的事務管理支持所有這些ORM框架以及JDBC。

Spring除了提供了基於模板的JDBC抽象,還提供了類似的ORM抽象和永久的框架。

JMX(Java管理擴展)

如何方便地展現Java應用的內在工作流程以便於管理,這是構建應用產品準備的關鍵部分。Spring的JMX模塊可以方便地展現應用Bean,就像JMX Mbeans。這樣一來,就可以監控和重新配置運行中的應用程序。

Java EE連接器API(JCA)

企業級應用包括運行在不同服務器和平臺上的應用。集成這些應用程序需要一些技巧。Java EE連接API(也稱爲JCA)提供了一種標準的方法來集成Java應用和多種企業信息系統,包括主框架和數據庫。

JCA很多方面與JDBC一樣,唯一的區別是JDBC主要是針對數據庫訪問,而JCA更多的是關注連接遺留系統的通用API。Spring對JCA的支持類似於其對JDBC的支持,提取出JCA的樣本代碼插入到模板中。

Spring MVC框架

Spring爲Web應用提供了全功能的MVC(Model/View/Controller)框架,比如用戶界面與應用邏輯是分離的。Java有很多類MVC框架可用選擇,例如Apache Struts、JSF、WebWork和Tapestry。

雖然Spring可以集成多種其他MVC框架,但是Spring也提供了自己的MVC框架,它改進了Spring在應用Web層的鬆耦合技術。

Spring Portlet MVC

多數Web應用都是基於頁面的——也就是說,每個對應用的請求都會現實一個完全新的頁面。每個頁面都呈現特定的信息或特定的表單來提示用戶。基於portlet的應用在一個Web頁面上聚集多個功能,這樣在一個頁面中一次就可以提供多個應用。

如果想創建基於portlet的應用,最好是利用Spring的Portlet MVC框架。Spring Portlet MVC建立在Spring MVC基礎上,提供了一套控制器來支持Java portlet API。

Spring的Web模塊

當裝載Spring應用上下文時,Spring MVC和Spring Portlet MVC需要一些特殊的考慮。Spring的Web模塊提供了支持Spring MVC和Spring Portlet MVC的類。

Web模塊還提供了幾個支持面向Web的任務,例如多部分文件上傳和編程綁定到業務對象的請求參數。它還包含了對Apache Struts和Java Server Faces(JSF)的集成支持。

遠程調用

所有應用都不是孤立的。通常,一個應用必須利用另一個應用的某些功能。當通過網絡來訪問其他應用時,某些形式的遠程調用將被用於通訊。

Spring的遠程調用允許將Java對象的某些功能展現爲遠程對象。如果需要遠程訪問對象,遠程調用模塊會使編寫遠程對象很簡單,就像它們是本地POJO一樣。有一些遠程調用選項,包括RMI(Remote Method Invocation,遠程方法調用)、Hessian、Burlap、JAX-RPC和Spring自己的HTTP Invoker。

Java消息服務(JMS)

遠程調用的下面是取決於網絡可靠性和通訊雙方的可用性。基於消息的通訊是可靠的,並且即使在網絡和端點不可用時,也可以保證消息的傳遞。

Spring的Java消息服務(Java Message Service)模塊可以將消息發送到JMS隊列和主題。同時,這個模塊還能幫助創建消息驅動的POJO,它能夠處理異步消息。

雖然Spring包括很多內容,但是最重要的是要認識到Spring儘可能避免了重新開發所有事情。Spring傾向於保留現有的API和框架。





發佈了40 篇原創文章 · 獲贊 35 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章