Spring 有可能成爲全部企業應用程序的一站式服務點,然而,Spring 是模塊化的,容許你挑選和選擇適用於你的模塊,沒必要要把剩餘部分也引入。html
下面的部分對在 Spring 框架中全部可用的模塊給出了詳細的介紹。web
Spring 框架提供約 20 個模塊,能夠根據應用程序的要求來使用。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)等。數組
它們的完整依賴關係以下圖所示:緩存
數據訪問/集成層包括 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模塊。。
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 應用程序中提供了客戶端和服務器端之間通訊的兩種方式。
還有其餘一些重要的模塊,像 AOP,Aspects,Instrumentation,Web 和測試模塊,它們的細節以下:
AOP 模塊提供了面向方面的編程實現,容許你定義方法攔截器和切入點對代碼進行乾淨地解耦,從而使實現功能的代碼完全的解耦出來。使用源碼級的元數據,能夠用相似於.Net屬性的方式合併行爲信息到代碼中。
Aspects 模塊提供了與 AspectJ 的集成,這是一個功能強大且成熟的面向切面編程(AOP)框架。
Instrumentation 模塊在必定的應用服務器中提供了類 instrumentation 的支持和類加載器的實現。
Messaging 模塊爲 STOMP 提供了支持做爲在應用程序中 WebSocket 子協議的使用。它也支持一個註解編程模型,它是爲了選路和處理來自 WebSocket 客戶端的 STOMP 信息。