spring框架是一个分层架构,它包含一系列的功能要素,并被分为大约20个模块。
Core Container
Core Container(核心容器)包含有Core、Beans、Context和Expression Language模块。
Core和Beans模块是框架的基础部分,提供IoC(转控制)和依赖注入特性。这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。
Core
Core模块主要包含Spring框架基本的核心工具类。
Beans
Beans模块是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control/Dependency Injection(Ioc/DI)操作相关的所有类。
Context
Context模块构建于Core和Beans模块基础之上,提供了一种类似于JNDI注册器的框架式的对象访问方法。Context模块继承了Beans的特性,为Spring核心提供了大量扩展,添加了对国际化(如资源绑定)、事件传播、资源加载和对Context的透明创建的支持。ApplicationContext接口是Context模块的关键。
Expression Language
Expression Language模块提供了一个强大的表达式语言用于在运行时查询和操纵对象,该语言支持设置/获取属性的值,属性的分配,方法的调用,访问数组上下文、容器和索引器、逻辑和算术运算符、命名变量以及从Spring的IoC容器中根据名称检索对象。
Middle layer
AOP
spring-aop 提供了一个符合AOP联盟标准的面向切面编程的实现。
AspectJ
spring-aspects模块集成AspectJ来实现aop。
Instrumentation
spring-instrument主要为应用服务器提供支持。例如spring-instrument-tomcat就包含了一个tomcat代理服务器。
Messaging
Spring4.0之后的版本提供了spring-message模块用以支持消息驱动的系统。同时提供了将message设置到method的注解。
Data Access/Integration
Data Access/Integration主要包含 JDBC, ORM, OXM, JMS 和 Transaction模块。
JDBC
Spring-jdbc模块提供了一个JDBC抽象层,它可以消除冗长的JDBC编码和解析数据库厂商特有的错误代码,这个模块包含了Spring对JDBC数据访问进行封装的所有类。
ORM
spring-orm模块为流行的对象-关系映射API,如JPA、JDO、Hibernate、iBatis等,提供了一个交互层,利用ORM封装包,可以混合使用所有Spring提供的特性进行O/R映射,如前边提到的简单声明性事务管理。
JMS
spring-jms模块主要用于支持消息的生产与消费,4.1后与message模块集成。
OXM
spring-oxm模块模块提供了一个xml-object mapping的抽象层。
Transactions
spring-tx模块为所有POJO及实现了接口特定的类提供程序性和声明性事务支持。
Web
Web层在applicationContext上,为基于Web的应用程序提供了上下文。 Web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。Web层包含了spring-web, spring-webmvc, spring-websocket 和 springwebmvc-portlet模块。
Web
spring-web模块提供了基础的面向Web的集成特性,例如,多文件上传、使用Servlet listeners初始化IoC容器以及一个面向Web的应用上下文。该模块还包含了对REST Web Service的实现。
Webmvc
spring-webmvc(也称Web-Servlet) 模块该模块包含Spring的model-view-controller(MVC)实现,Spring的MVC框架使得模型范围内的代码和web forms之间能够清楚地分离开来,并与Spring框架的其他特性基础在一起。
Portlet
spring-webmvc-portlet模块:提供了用于Portlet 的MVC的实现。
Test
spring-test模块主要提供单元测试与集成测试的支持,支持Junit与TestNG。同时也提供mock 对象以供测试。
参考文档:
Spring Framework Reference Documentation-4.3.14.RELEASE