Spring概述

體系結構

Spring 有可能成爲全部企業應用程序的一站式服務點,然而,Spring 是模塊化的,容許你挑選和選擇適用於你的模塊,沒必要要把剩餘部分也引入。html

下面的部分對在 Spring 框架中全部可用的模塊給出了詳細的介紹。web

Spring 框架提供約 20 個模塊,能夠根據應用程序的要求來使用。spring

Spring 體系結構

核心容器

核心容器由 spring-core,spring-beans,spring-context,spring-context-support和spring-expression(SpEL,Spring表達式語言,Spring Expression Language)等模塊組成,它們的細節以下:數據庫

  • spring-core模塊提供了框架的基本組成部分,包括 IoC 和依賴注入功能。express

  • spring-beans 模塊提供 BeanFactory,工廠模式的微妙實現,它移除了編碼式單例的須要,而且能夠把配置和依賴從實際編碼邏輯中解耦。編程

  • context模塊創建在由core和 beans 模塊的基礎上創建起來的,它以一種相似於JNDI註冊的方式訪問對象。Context模塊繼承自Bean模塊,而且添加了國際化(好比,使用資源束)、事件傳播、資源加載和透明地建立上下文(好比,經過Servelet容器)等功能。Context模塊也支持Java EE的功能,好比EJB、JMX和遠程調用等。ApplicationContext接口是Context模塊的焦點。spring-context-support提供了對第三方庫集成到Spring上下文的支持,好比緩存(EhCache, Guava, JCache)、郵件(JavaMail)、調度(CommonJ, Quartz)、模板引擎(FreeMarker, JasperReports, Velocity)等。數組

  • spring-expression模塊提供了強大的表達式語言,用於在運行時查詢和操做對象圖。它是JSP2.1規範中定義的統一表達式語言的擴展,支持set和get屬性值、屬性賦值、方法調用、訪問數組集合及索引的內容、邏輯算術運算、命名變量、經過名字從Spring IoC容器檢索對象,還支持列表的投影、選擇以及聚合等。

它們的完整依賴關係以下圖所示:緩存

Spring 體系結構

數據訪問/集成

數據訪問/集成層包括 JDBC,ORM,OXM,JMS 和事務處理模塊,它們的細節以下:服務器

(注:JDBC=Java Data Base Connectivity,ORM=Object Relational Mapping,OXM=Object XML Mapping,JMS=Java Message Service)mvc

  • JDBC 模塊提供了JDBC抽象層,它消除了冗長的JDBC編碼和對數據庫供應商特定錯誤代碼的解析。

  • ORM 模塊提供了對流行的對象關係映射API的集成,包括JPA、JDO和Hibernate等。經過此模塊可讓這些ORM框架和spring的其它功能整合,好比前面說起的事務管理。

  • OXM 模塊提供了對OXM實現的支持,好比JAXB、Castor、XML Beans、JiBX、XStream等。

  • JMS 模塊包含生產(produce)和消費(consume)消息的功能。從Spring 4.1開始,集成了spring-messaging模塊。。

  • 事務模塊爲實現特殊接口類及全部的 POJO 支持編程式和聲明式事務管理。(注:編程式事務須要本身寫beginTransaction()、commit()、rollback()等事務管理方法,聲明式事務是經過註解或配置由spring自動處理,編程式事務粒度更細)

Web

Web 層由 Web,Web-MVC,Web-Socket 和 Web-Portlet 組成,它們的細節以下:

  • Web 模塊提供面向web的基本功能和麪向web的應用上下文,好比多部分(multipart)文件上傳功能、使用Servlet監聽器初始化IoC容器等。它還包括HTTP客戶端以及Spring遠程調用中與web相關的部分。。

  • Web-MVC 模塊爲web應用提供了模型視圖控制(MVC)和REST Web服務的實現。Spring的MVC框架可使領域模型代碼和web表單徹底地分離,且能夠與Spring框架的其它全部功能進行集成。

  • Web-Socket 模塊爲 WebSocket-based 提供了支持,並且在 web 應用程序中提供了客戶端和服務器端之間通訊的兩種方式。

  • Web-Portlet 模塊提供了用於Portlet環境的MVC實現,並反映了spring-webmvc模塊的功能。

其餘

還有其餘一些重要的模塊,像 AOP,Aspects,Instrumentation,Web 和測試模塊,它們的細節以下:

  • AOP 模塊提供了面向方面的編程實現,容許你定義方法攔截器和切入點對代碼進行乾淨地解耦,從而使實現功能的代碼完全的解耦出來。使用源碼級的元數據,能夠用相似於.Net屬性的方式合併行爲信息到代碼中。

  • Aspects 模塊提供了與 AspectJ 的集成,這是一個功能強大且成熟的面向切面編程(AOP)框架。

  • Instrumentation 模塊在必定的應用服務器中提供了類 instrumentation 的支持和類加載器的實現。

  • Messaging 模塊爲 STOMP 提供了支持做爲在應用程序中 WebSocket 子協議的使用。它也支持一個註解編程模型,它是爲了選路和處理來自 WebSocket 客戶端的 STOMP 信息。

  • 測試模塊支持對具備 JUnit 或 TestNG 框架的 Spring 組件的測試。
相關文章
相關標籤/搜索