1. 程式人生 > >深入理解Spring框架(一)

深入理解Spring框架(一)

Spring設計理念與整體架構

    1、Spring是一個非入侵性框架,其目標是使應用程式程式碼對框架的以來最小化,應用程式碼可以在沒有
Spring或者其他容器的情況下使用。
    2、Spring提供一個一致的程式設計模型,使應用直接使用POJO((Plain Ordinary Java Object)簡單的Java物件),
從而可以與執行環境隔離開。
    3、Spring推動應用的設計風格向面向物件及面向介面程式設計轉變,提高程式碼的重用性和可測試性。
    4、改進體系結構的選擇,幫助開發者選擇不同的技術實現。比如從Hibernate切換到其他ORM工具,
從Struts切換到Spring MVC。降低平臺鎖定的風險。

spring各個子專案

    Spring開源社群:http://www.springsource.org,圍繞Spring核心構建的一個豐富的平臺生態系統。通過這些子專案更
深入瞭解Spring的設計架構和實現原理。
  • Spring Framework(Core):
    Spring 專案的核心,包含了一系列的IOC容器的設計,提供依賴反轉模式的實現。同時集成了AOP功能,還包含MVC、JDBC、事務處理等模組的實現
  • Spring Web Flow:
    原是建立在Spring MVC基礎上的Web工作流引擎。定義了一種特定的語言描述工作流,同時高階的工作流控制器引擎可以管理會話狀態,支援AJAX來建立豐富的客戶體驗,並且提供JSF[^footnote]:(JavaServer Faces (JSF) 是一種用於構建Java Web 應用程式的標準框架(是Java Community Process 規定的JSR-127標準)。它提供了一種以元件為中心的使用者介面(UI)構建方法,從而簡化了Java伺服器端應用程式的開發。)的支援。 Spring Web Flow架構圖如下圖:
    這裡寫圖片描述
  • Spring BlazeDS Integration:
    提供Spring 與Adobe Flex 技術整合的模組。
    BlazeDS模組實現了Flex前端展現和伺服器後端處理的通訊機制。在這個實現基礎上,Spring BlazeDS Integration進行了進一步的封裝,讓模組使用更像是由Spring ToC容器管理的Bean。
  • Spring Security:
    廣泛使用的基於Spring的認證和安全工具,就是先前在Spring社群中盛名的Acegi框架,為Spring提供比如使用者認證、授權等的安全服務。
  • Spring Security OAuth:
    OAuth是點三方模組,通過提供一個開放協議,前端桌面可以對Web應用進行簡單而標準的安全呼叫
  • Spring Dynamic Modules
    可以讓Spring執行在OSGI的平臺。Eclipse就是構建在OSGI的平臺上,通過這個專案可以在OSGI平臺上方便執行Spring應用。
  • Spring Batch:
    提供構建應用和自動化操作的框架。
  • Spring Integration:
    為企業資料整合提供各種介面卡,以此來轉換各種訊息格式,幫助Spring應用完成與企業應用系統的整合。
  • Spring AMQP:
    為Spring應用更好使用AMQP(高階訊息佇列協議)的訊息服務
  • Spring .NET:
    在.NET環境中使用Spring。.NET開發人員通過它在.NET專案中使用Spring 的IoC容器、AOP特性等。
  • Spring Andriod:
    為Andriod終端開發應用提供Spring支援,提供一個在Andriod應用環境中工作,基於Java的REST客戶端。
  • Spring Mobile:
    不同於Spring Andriod,基於Spring MVC構建的,為移動終端的伺服器應用開發提供支援。
  • Spring Social:
    Spring框架的擴充套件。幫助Spring應用更方便的使用SNS(Social Network Service)
  • Spring Data:
    為Spring提供使用非關係型資料的能力。

Spring整體架構

Spring 架構圖如下:
這裡寫圖片描述

在這個架構圖中,可以看到一下的Spring基本組成模組:

  • Spring IoC:

        包含最基本的IOC容器BeanFactory的介面與實現。如XmlBeanFactory就是一個最基本
    的BeanFactory(IoC容器)。還支援報告Resource訪問資源的抽象和定位等。還提供IoC容器的高階形
    器實現,圍繞IoC基本容器和應用上下文實現,構成整個Spring IoC模組設計的主要內容。
    
  • Spring AOP:

        Spring核心模組,TransactionProxyFactoryBean宣告式事務處理,就是通過AOP整合到Spring中。
    在這個模組中,AOP實現了一個完整的建立AOP代理物件,實現攔截器,直至實現各種各種Advice通知的過程。
    
  • Spring MVC:

        以DispatcherServlet為核心,實現MVC模式,包括怎樣與web容器環境的整合,web請求攔截、分發、
    處理和ModelAndView資料的返回,以及如何整合各種UI試圖展現和資料表現,完成web的前端設計。
    
  • Spring JDBC/Spring ORM:

  • Spring 事務處理:

        是一個通過AOP實現自身功能增強的典型模組。這些事務處理的基本過程與具體的事務處理器是實現是無關的,
    即可以選擇不同的具體的事務處理機制。應為使用了宣告式事務處理,這些具體的事務處理機制被納入
    Spring事務處理的同意框架在完成,並完成與具體業務程式碼的解耦。
    
  • Spring 遠端呼叫:

        Spring為應用帶來的一個好處是將應用解耦。應用解耦,一方面降低設計複雜性,另一方面可以在解耦以後將
    應用模組分散式地部署,以提高系統整體的效能。在後一種情況下,會使用到Spring的遠端呼叫,是通過Spring
    的封裝從應用到應用之間的端到端呼叫。在這個過程中,通過Spring的封裝,為應用遮蔽了各種通訊和
    呼叫細節的實現,同時使應用可以通過各種選擇不同的遠端呼叫實現。
    
  • Spring 應用:

    Spring子專案