Spring 框架包含约20个模块,分为以下几组:
- 核心容器 Core Container
- 数据访问/集成 Data Access/Integration
- 网络Web
- 面向切面 AOP (Aspect Oriented Programming)
- 插装 Instrumentation(Java 1.6新特性)
- 消息 Messaging
- 测试 Test
1. 核心容器
spring-core
和spring-beans
:提供框架的基础部分,包括控制反转和依赖注入的特性,BeanFactory是用工厂模式来实现的,使我们不用自己去创建单例对象,并将依赖的配置和设计与业务逻辑分开来。
spring-context
模块是建立在前两者之上的,通过它可以使用框架风格(framework-style)的方法来访问对象,类似于JNDI服务注册。该模块集成了bean模块,并加入了国际化、事件传播、资源加载、透明化生成上下文,还支持Java EE特性如EJB、 JMX 和 basic remoting。context模块的关键是ApplicationContext接口。spring-context-support
支持集成第三方库,如缓存、邮件、调度、模板引擎等。
spring-expression
提供了强大的EL( expression language)在运行状态查询和操纵对象,它支持属性的赋值,通过setter和getter方法设置和获取属性值、方法调用、访问数组 集合、逻辑和数学操纵、变量命名、通过IoC容器检索对象。
2. AOP和插装
spring-aop
模块提供了面向切面编程的实现,使我们可以定义方法拦截器和切点来使得分离功能独立的业务。使用基于源的元数据功能,我们还可以将行为信息集成到代码中,这和.NET的属性很相似。
spring-aspects
模块支持Spring 框架整合AspectJ.
spring-instrument
在特定容器中实现类插装和类加载器的实施 。
spring-instrument-tomcat
包含Tomcat的Spring插装代理。
3. 消息
spring-messaging
模块包含从 Message
,MessageChannel
,MessageHandler
等其他基于消息的基础应用中得到的抽象。该模块还包含一系列的注解来讲消息映射到方法上,和SpringMVC注解类似 。
4. 数据访问控制
spring-jdbc
提供JDBC抽象层 ,使我们从繁重的JDBC编程中解脱出来,并且不再需要为解析不同的数据库的异常而烦恼。
spring-tx
支持对所有POJO和实现了特定接口的类进行 编程式和申明式事务( programmatic and declarative transaction )管理。
spring-orm
整合了流行的ORM(object-relational mapping )应用程序接口,包括JPA、JDO和Hibernate。使用该模块我们可以任意使用这些ORM框架和Spring的其他功能(如上面的申明式事务管理)进行组合。
spring-oxm
为OXM(Object/XML mapping) 的实现提供抽象层,如 JAXB、Castor、XMLBeans、JiBX 和XStream。
spring-jms
是Java消息服务(Java Messaging Service),包含产生和接受消息 。Spring Framework 4.1将它并入在spring-messaging
模块。
5. Web
spring-web
包含基本的面向网络的集成特性,如文件分部上传,使用Servet监听器和面向网络的应用上下文初始化IoC容器。他还包括 HTTP 客户端和网络相关的 Spring远程支持。
spring-webmvc
也被成为 Web-Servlet 模块,包含Spring的模型-视图-控制器(model-view-controller,MVC) 和 REST Web Services。 Spring MVC 框架是得实体模型代码和网络表单清楚地分离开来,还可以轻松集成Spring框架的其他特性。
spring-webmvc-portlet
也被称为 Web-Portlet 模块,在Portlet 容器中实现MVC,并且能使用spring-webmvc
模块的功能。
6. 测试
spring-test
模块支持单元测试 JUnit 、集成测试 TestNG和独立代码测试 mock objects。它支持加载和缓存 Spring ApplicationContexts。