天天看點

Spring整體架構和jar包依賴關系詳解



想對spring架構進行深入的學習一下,看看源代碼,先了解下Spring的整體架構以及各子產品之間的關系。

在介紹整體架構之前,我們先來聊聊大家關于Spring,熟悉的子產品有哪些,還有哪些不熟悉的子產品。

作為優秀的開源項目,spring包括衆多的子項目。

    Spring Web Flow:建構在spring MVC的基礎上(spring MVC大家應該都很熟悉吧),定義了一種描述工作流的語言,還可以管理會話狀态,支援AJAX來建構豐富的

                                   用戶端體驗,并且提供對JSF的支援。

    Spring Batch:批處理操作。主要用于不需要和使用者互動,重複的操作量很大,大容量的批量的資料處理,例如有些定時任務。

    Spring Framework:這個應該也是大家比較熟悉的,是spring的核心。要想真正了解spring,這塊一定要吃透。主要包括IOC和AOP兩個核心基本功能。

    Spring Security:spring的安全 認證。

    Spirng Data:為spring提供使用非關系資料的能力,如map/reduce分布式存儲(MongoDB)。

    Spring Web Services:基于spring的web服務架構,主要側重于文檔驅動的web服務,提供SOAP服務開發,允許通過多種方式建立web服務。

    Spring .NET:在.net環境下使用spring開發。

    下面的一些子產品,我就不是很熟悉,也一起列出來。

    Spring AMQP:為spring應用更好的使用基于AMQP(進階消息隊列協定)的消息服務而開發的

    Spring for Android:為android終端開發應用提供spring的支援

    Spring Gemfire:用來簡化通過 GemFire分布式資料管理平台來部署高可伸縮性的 Spring 應用

    Spring Integration:針對 Java 技術的一個可擴充的、基于文本的開源 RAD 工具。它是用于建立和管理基于Spring 的應用程式的一個強大資源   

    Spring Mobile:基于sring MVC建構,為移動終端的伺服器應用開發提供支援,使工作在spring傳統的伺服器端完成

    Spring ROO:建立Spring工程的小工具,

    Spring Social:spring架構的擴充,幫助spring應用更友善的與各種社交網站互動,如facebook等

    之前在項目中和平時自己寫的練手項目中,有時候用到spring的時候,總是不是很明白要弄哪些jar包,有時候直接拿上次項目的jar原封不動的拿過來,要不就是把所有的

    包都放進去,放在這樣肯定不會錯,但也知道這樣不好。下面就來好好的每個jar包的作用和功能。

   下面介紹spring4的結構圖,spring架構是一個分層架構,如下圖所示:

Spring整體架構和jar包依賴關系詳解

          上圖将spring分為5個部分:core, aop,  data access,   web,  test。圖中每個圓角矩形都對應一個jar。所有這些jar的“groupId”都是“org.springframework”,每個jar

          有一個不同的“artifactId”,另外,“instrumentation”有兩個jar,還有一個“spring-context-support”圖中沒有列出,是以spring4的jar包一共是20個。

    下面介紹這5個部分的jar以及依賴關系:

    (1)Core Container:核心容器,下面4個子產品jar包在使用spring時必須導入。

        1)Core子產品:主要包含Spring架構基本的核心工具類,特别重要

        2)Beans子產品:包含通路配置檔案、建立和管理bean以及進行Ioc/DI操作相關的所有類

        3)Context子產品:建構于Core和Beans子產品基礎之上,提供了一種類似于JNDI注冊器的架構式的對象通路方法

        4)Expression Languaga子產品:提供了一個強大的表達式語言用于在運作時查詢和操縱對象

      它們的依賴關系:

Spring整體架構和jar包依賴關系詳解

      (2)Data Access/Integration

        1)JDBC子產品:jdbc支援

        2)ORM子產品:對象關系映射,內建orm架構,如Hibernate,IBatis

        3)OXM子產品:對象XML映射

        4)JMS(Java Message Service)子產品:java消息服務

        5)Transaction子產品:事務控制

      它們的依賴關系

Spring整體架構和jar包依賴關系詳解
Spring整體架構和jar包依賴關系詳解

    (3)Web:建立在應用程式上下文子產品之上,為基于web的應用程式提供了上下文,還簡化了處理多部分請求以及将請求參數綁定到域上的工作

        1)spring-web子產品:提供了基礎的面向web的內建特性,如檔案上傳

        2)spring-webmvc子產品:包含了spring 的mvc實作

        3)spring-websocket:為web應用提供的高效通信工具

        4)spring-web-portlet子產品:提供了用于Portlet環境和web-servlet子產品的mvc實作

  它們的依賴關系

Spring整體架構和jar包依賴關系詳解

   (4)AOP子產品:提供了面向切面程式設計的實作,将邏輯代碼分開,降低它們之間的耦合性

       1)spring-aop:面向切面程式設計

       2)spring-aspects :Aspects子產品提供了對AspectJ(一個面向切面的架構,它擴充了Java語言)的內建支援。

       3)spring-instrument:提供一些類級的工具支援和ClassLoader級的實作,用于伺服器

       4)spring-instrument-tomcat:針對tomcat的instrument實作

       5)spring-messaging:用于建構基于消息的應用程式

       它們的依賴關系

Spring整體架構和jar包依賴關系詳解

     (5)Test子產品:

       test部分隻有一個子產品,我将spring-context-support也放在這吧

      1)spring-test:spring測試,提供junit與mock測試功能

      2)spring-context-support:spring額外支援包,比如郵件服務、視圖解析等

  它們的依賴關系

Spring整體架構和jar包依賴關系詳解

     OK,就這麼多了。