Spring整體架構


前言

  Spring是2003年興起的一個輕量級的java開源框架,Spring是為了解決企業應用開發的復雜性而創建的,它使用JavaBean來完成以前只可能由EJB完成的事情。

  (EJB是sun的JavaEE服務器端組件模型,設計目標與核心應用是部署分布式應用程序。簡單來說就是把已經編寫好的程序(即:類)打包放在服務器上執行)

Spring的整體架構

  Spring框架是一個分層框架,包含一系列的功能要素,被分為大約20個模塊,如圖:

  

 

1.Core Container

  Core Container(核心容器)包含有Core、Beans、Contexts 和 Expression Language模塊。

  Core 和 Beans模塊是框架的基礎部分,提供 IoC(Inversion of Control,控制反轉) 和依賴注入特性。

  • Core 模塊主要包含Spring 框架基本的核心工具類,Spring的其他組件都要使用到這個包里的類,Core 模塊是其他組件的基本核心,當然也可以在自己的應用系統中使用這些工具類
  • Beans 模塊是框架是所有應用都要用到的,它包含訪問配置文件、創建和管理bean以及進行 Inversion of Control / Dependency Injection(IoC/DI)操作相關的所有類
  • Context 模塊構建於 Core 和 Beans 模塊的基礎之上,提供了一種類似於 JNDI 注冊器的框架式的對象訪問方法。Context 模塊繼承了 Beans 的特性,為 Spring 核心提供了大量擴展,提供了對國際化(如資源綁定)、事件傳播、資源加載和對 Context 的透明創建的支持。 Context 模塊同時也支持 J2EE的一些特性,例如 EJB、JMX和基礎的遠程處理。ApplicationContext 接口是 Context 模塊的關鍵。
  • Expression Language 模塊提供了一個強大的表達式語言用於在運行時查詢和操縱對象。它是 JSP 2.1 規范中定義的 unifed express language 的一個擴展。該語言支持設置/獲取屬性的值,屬性的分配,方法的調用,訪問數組上下文、容器和索引器、邏輯和算數運算符、命名變量以及從 Spring 的 IoC 容器中根據名稱檢索對象。

2. Data Access/Integration

  Data Access/Interation 層包含有 JDBC、ORM、OXM、JMS 和 Transaction 模塊

  • JDBC 模塊提供了一個 JDBC 抽象層,它可以消除冗長的 JDBC 編碼和解析數據庫廠商特有的錯誤代碼。此模塊包含了 Spring 對 JDBC 數據訪問進行封裝的所有類。
  • ORM 模塊為流行的對象-關系映射 API ,例如 JPA、JDO、 Hibernate、 iBatis等,提供了一個交互層。利用 ORM 封裝包,可以混合使用 Spring 提供的特性進行 O/R映射(Object/Relation)。
  • OXM 模塊提供了一個對 Object/XML映射實現的抽象層,Object/XML 映射實現包括 JAXB、Castor 、XMLBeans 、JiBX 和 XStream。
  • JMS (Java Messaging Service) 模塊主要包含了一些制造和消費消息的特性。
  • Transaction 模塊支持編程和生命性的事務管理,這些事物必須實現特定的接口,並且對所有的 POJO 都適用。

3.Web.

  Web 上下文模塊建立在應用程序上下文模塊之上,為基於 Web 的應用程序提供了上下文。所以 Spring 框架支持 Jakarta Struts 的集成。Web 模塊還簡化了處理多部分請求以及將請求參數綁定到域對象的工作。Web 層包含了 Web、Web-Servlet、Web-Struts 和 Web-Porlet模塊。

  • Web模塊:提供了基礎的面向 Web 的集成特性。例如,多文件上傳、使用 servlet listeners 初始化 IoC 容器以及一個面向 Web 的應用上下文。它還包含 Spring 遠程支持中 Web 的相關部分
  • Web-Servlet 模塊 web.servlet.jar: 該模塊包含 Spring 的 model-view-controller (MVC) 實現。 Spring 的 MVC框架使得模型范圍內的代碼和 web forms之間能夠清楚的分離開來,並與 Spring 框架的其他特性集成在一起。
  • Web-Struts 模塊: 該模塊提供了對 Struts 的支持,使得類在 Spring 應用中能夠與一個典型的 Struts Web 層集成在一起。該支持在 Spring 3.0 中是 deprecated 的。
  • Web-Porlet 模塊: 提供了用於 Porlet 環境和 Web-Servlet 模塊的 MVC 的實現。

4.AOP

  AOP 模塊提供了一個符合 AOP 聯盟標准的面向切面編程的實現,它讓你可以定義例如方法攔截器和切點,從而將邏輯代碼分開,降低它們之間的耦合性。利用 source-level 的元數據功能,還可以將各種行為信息合並到你的代碼中。

  通過配置管理特性,Spring AOP 模塊直接將面向切面的編程功能集成到了 Spring 框架中,所以可以很容易的使 Spring 框架管理的任何對象支持 AOP,不用依賴  EJB 組件,就可以將聲明性食物管理集成到應用程序中。

  • Aspects 模塊提供了對 AspectJ 的集成支持。
  • Instrumentation 模塊提供了 class instrumentation 支持和 classloader 實現,使得可以在特定應用服務器上使用。

5.Test

  Test模塊支持使用 JUnit 和 TestNG 對 Spring 組件進行測試。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM