- Spring技術內幕:深入解析Spring架構與設計原理(第2版)
- 計文柯
- 1963字
- 2018-12-31 19:55:30
1.1 Spring的各個子項目
打開Spring社區網站http://www.springsource.org, 我們可以看到圍繞Spring核心構建出的一個豐富的平臺生態系統。在這個平臺生態系統中,除了Spring本身,還有許多值得注意的子項目。對Spring應用開發者來說,了解這些子項目,可以更好地使用Spring,或者說,可以通過閱讀這些子項目的實現代碼,更深入地了解Spring的設計架構和實現原理。這里將會對Spring的各個子項目進行簡要的介紹。首先,在SpringSource的官方社區網站中單擊Project鏈接,這時就可以看到Projects下拉列表中列出的各個子項目的項目鏈接,如圖1-1所示。

圖1-1 Projects下拉列表中的Spring子項列表
下面對Spring的主要子項目情況進行簡要介紹,幫助讀者熟悉Spring的整個生態系統的情況。
? Spring Framework (Core):這是我們熟知的Spring項目的核心。Spring Framework (Core)中包含了一系列IoC容器的設計,提供了依賴反轉模式的實現;同時,還集成了AOP功能;另外,在Spring Framework (Core)中,還包含了其他Spring的基本模塊,比如MVC、JDBC、事務處理模塊的實現。這些模塊的詳細設計和實現,會在本書后續章節中詳細闡述。
? Spring Web Flow:原先的Spring Web Flow是一個建立在Spring MVC基礎上的Web工作流引擎。隨著其自身項目的發展,Web Flow比原來更為豐富,Spring Web Flow定義了一種特定的語言來描述工作流,同時高級的工作流控制器引擎可以管理會話狀態,支持AJAX來構建豐富的客戶端體驗,并且提供對JSF的支持。如圖1-2所示是Spring Web Flow的架構圖,通過這個圖,我們可以了解到,Spring Web Flow實際上是構建在Spring MVC基礎上的,是相對于Spring Framework (Core)獨立發展的。

圖1-2 Spring Web Flow的架構圖
? Spring BlazeDS Integration:這是一個提供Spring與Adobe Flex技術集成的模塊,大家應該都領略過使用Flex技術做前端展現的絢麗效果。在現實的應用開發中,如果使用Flex作為前端,那么后端怎樣和服務器端集成才能正好成為利用Java EE技術構建的后端呢?Spring BlazeDS Integration簡化了這種集成工作,特別是對后端應用由Spring來構建的情況,正是Spring BlazeDS大顯身手的場合了。在Spring BlazeDS Integration項目中,為Flex前端和后臺的通信提供了和Spring開發模式一致的編程模型。在這個項目中,實際上使用了BlazeDS這個由Adobe提供的模塊,這個BlazeDS模塊實現了Flex前端展現和服務器后端處理的通信機制。在這個實現的基礎上,Spring BlazeDS Integration進行了進一步的封裝,讓這個模塊的使用更像是由一個受Spring IoC容器管理的Bean。
? Spring Security:是廣泛使用的基于Spring的認證和安全工具,就是先前在Spring社區中久負盛名的Acegi框架,Spring的老用戶對這個框架都不陌生—這是一個自發的由Spring的愛好者發起的安全框架,其目標是為Spring應用提供一個安全服務,比如用戶認證、授權等。可以說,沒有這樣一個框架,很多Spring應用的開發是很難成為一個完整應用的,因為框架是構建用戶管理的核心和基礎。Spring Acegi由Spring團隊接手后,在2006年發行了穩定的1.0正式版,雖然是基于Acegi框架的,但是Spring Security已經在原有基礎上增加了許多的新特性。關于這個框架的架構和具體實現,本書的后續章節會進行詳細介紹。
? Spring Security OAuth:這個項目為OAuth在Spring上的集成提供支持。OAuth是一個第三方的模塊,提供一個開放的協議的實現,通過這個協議,前端桌面應用可以對Web應用進行簡單而標準的安全調用。
? Spring Dynamic Modules:可以讓Spring應用運行在OSGi的平臺上。我們知道,通過使用OSGi平臺,增加了應用在部署和運行時的靈活性,Eclipse就是構建在OSGi的平臺上,通過這個項目,可以在OSGi平臺上方便地運行Spring應用。
? Spring Batch:提供構建批處理應用和自動化操作的框架,這些應用的特點是不需要與用戶交互,重復的操作量大,對于大容量的批量數據處理而言,這些操作往往要求較高的可靠性。Spring Batch的架構如圖1-3所示。

圖1-3 Spring Batch的架構圖
? Spring Integration:體現了“企業集成模式”的具體實現,并為企業的數據集成提供解決方案。Spring Integration為企業數據集成提供了各種適配器,通過這些適配器來轉換各種消息格式,并幫助Spring應用完成與企業應用系統的集成。
? Spring AMQP:是為Spring應用更好地使用基于AMQP(高級消息隊列協議)的消息服務而開發的,使在Spring應用中使用AMQP消息服務器變得更為簡單。這個項目支持Java和.NET兩個版本。SpringSource旗下的Rabbit MQ就是一個開源的基于AMQP的消息服務器,Rabbit MQ是用Erlang語言開發出來的。
? Spring .NET:如果想在.NET環境中也像在Java環境中使用Spring一樣為應用開發帶來便利,那應該怎么辦?可以考慮使用Spring .NET項目,這是Spring在.NET環境中的移植,.NET開發人員通過它可以在.NET環境中使用Spring的IoC容器,以及AOP這些在Java開發中被大家熟知的特性。希望通過Spring .NET項目,能夠簡化.NET的應用開發。
? Spring Android:為Android終端開發應用提供Spring的支持,它提供了一個在Android應用環境中工作,基于Java的REST客戶端。
? Spring Mobile:Spring Mobile和Spring Android不同,它能使工作在Spring傳統的服務器端完成。它是基于Spring MVC構建的,為移動終端的服務器應用開發提供支持,比如,使用Spring Mobile可以在服務器端自動識別連接到服務器的移動終端的相關設備信息,從而為特定的移動終端實現應用定制。
? Spring Social:是Spring框架的擴展,可以幫助Spring應用更方便地使用SNS(Social Network Service),例如FaceBook和Twitter這些服務的使用等。
? Spring Data:該項目為Spring應用提供使用非關系型數據的能力,比如,當基礎數據并非存儲在關系數據庫中時,又如Map-Reduce中的分布式存儲、云計算存儲環境等。Spring應用可以考慮使用Spring Data來操作這種類型的數據。