spring總共大約20個模塊,這些模塊被整合在核心容器(Core Container)、AOP和設備支持、數據訪問及集成、Web、報文發送、Test 6個模塊集合。

組成Spring框架的每個模塊集合或者模塊都可以單獨存在,也可以一個模塊或者多個模塊聯合實現。
模塊組成和功能如下:
1、核心容器:spring-beans、spring-core、spring-context、spring-expression 4個模塊組成。
- spring-beans和spring-core模塊是Spring框架的核心模塊,包含了控制反轉(IOC)和依賴注入(DI)。BeanFactory 接口是 Spring 框架中的核心接口,它是工廠模式的具體實現。BeanFactory 使用控制反轉對應用程序的配置和依賴性規范與實際的應用程序代碼進行了分離。但 BeanFactory 容器實例化后並不會自動實例化 Bean,只有當Bean
被使用時BeanFactory容器才會對該Bean進行實例化與依賴關系的裝配。 - spring-context模塊構架於核心模塊之上,他擴展了BeanFactory,為她添加了Bean 生命周期控制、框架事件體系以及資源加載透明化等功能。此外該模塊還提供了許多企業級支持,如郵件訪問、遠程訪問、任務調度等。ApplicationContext是該模塊的核心接口,她是BeanFactory的超類,與BeanFactory不同,ApplicationContext 容器實例化后會自動對所有的單實例Bean進行實例化與依賴關系的裝配,使之處於待用狀態。
- spring-expression模塊是統一表達式語言(EL)的擴展模塊,可以查詢、管理運行中的對象,同時也方便的可以調用對象方法、操作數組、集合等。它的語法類似於傳統EL,但提供了額外的功能,最出色的要數函數調用和簡單字符串的模板函數。這種語言的特性是基於Spring產品的需求而設計,他可以非常方便地同Spring IOC進行交互。
2、AOP和設備支持:spring-aop、spring-aspects、spring-instrument 3個模塊組成。
- spring-aop是Spring的另一個核心模塊,是AOP主要的實現模塊。在 Spring 中,他是以JVM的動態代理技術為基礎,然后設計出了一系列的AOP橫切實現,比如前置通知、返回通知、異常通知等。同時,Pointcut接口來匹配切入點,可以使用現有的切入點來設計橫切面,也可以擴展相關方法根據需求進行切入。
- spring-aspects模塊集成自AspectJ框架,主要是為SpringAOP提供多種AOP實現方法。
- spring-instrument模塊是基於JAVA SE中的"java.lang.instrument"進行設計的,是 AOP的一個支援模塊,主要作用是在JVM啟用時,生成一個代理類,程序員通過代理類在運行時修改類的字節,從而改變一個類的功能, 實現AOP的功能。
3、數據訪問及集成:spring-jdbc、spring-tx、spring-orm、spring-oxm、spring-jms五個模塊組成。
- spring-jdbc模塊是Spring提供的JDBC抽象框架的主要實現模塊,用於簡化Spring JDBC。主要是提供JDBC模板方式、關系數據庫對象化方式、SimpleJdbc方式、事務管理來簡化JDBC編程,主要實現類是JdbcTemplate、SimpleJdbcTemplate以及 NamedParameterJdbcTemplate。
- spring-tx模塊是Spring JDBC事務控制實現模塊。使用Spring框架,它對事務做了很好的封裝,通過它的AOP配置,可以靈活的配置在任何一層。事務是以業務邏輯為基礎的,一個完整的業務應該對應業務層里的一個方法,如果業務操作失敗,則整個事務回滾。持久層的設計則應該遵循一個很重要的原則:保證操作的原子性,即持久層里的每個方法都應該是不可以分割的。
- spring-orm模塊是ORM框架支持模塊,主要集成Hibernate,Java Persistence API (JPA) 和Java Data Objects (JDO) 用於資源管理、數據訪問對象(DAO)的實現和事務策略。
- spring-jms模塊(Java Messaging Service)能夠發送和接受信息,自Spring Framework 4.1以后,還提供了對spring-messaging模塊的支撐。
- spring-oxm模塊主要提供一個抽象層以支撐OXM(OXM 是 Object-to-XML-Mapping 的縮寫,它是一個O/M-mapper,將java對象映射成 XML數據,或者將XML數據映射成 java對象)。
4、Web:spring-web、spring-webmvc、spring-websocket、spring-webflux 四個模塊組成。
- spring-web模塊為Spring提供了最基礎Web支持,主要建立於核心容器之上,通過 Servlet或者Listeners來初始化IOC容器,也包含一些與Web相關的支持。
- spring-webmvc模塊是一 個Web-Servlet模塊,實現了Spring MVC
(model-view-Controller)的Web應用。 - spring-websocket模塊主要是與Web前端的全雙工通訊的協議。
- spring-webflux是一個新的非堵塞函數式Reactive Web框架,可以用來建立異步的、非阻塞事件驅動的服務,並且擴展性非常好。
5、報文發送:spring-messaging 1個模塊組成。
- spring-messaging是從Spring4開始新加入的一個模塊,主要職責是為Spring框架集成一些基礎的報文傳送應用。
6、Test:spring-test 1個模塊組成。
- spring-test模塊主要為測試提供支持的。
spring5各個模塊之間的依賴關系:

