Spring 是一个模块化的框架,提供了(20多个模块)几乎全部企业应用所须要的底层实现。你能够自由选择你须要的模块,摒弃你不须要的。下图列出了Spring提供的全部模块。web
核心容器模块(Core Container):核心容器包括了Beans,Core,Context和SpEL四大组件。编程
Core组件提供了框架的基础部分,包括控制反转(Ioc)和依赖注入(DI).服务器
Bean 组件提供了BeanFactory,它是工厂模式的实现框架
Context组件基于Core组件和Beans组件提供的功能,它是访问其余对象的中间件。ApplicationContext接口是Context模块核心。模块化
SpEL组件提供了强大的表达式语言来在运行时查询和操做对象图工具
数据访问/集成模块(Data Access/Integration):数据访问/集成层提供了JDBC,ORM,OXM,JMS以及事务(Transaction)测试
JDBC 组件提供了JDBC抽象层,开发能够不用去关注冗长的JDBC相关代码。spa
ORM 组件提供了流行的对象-关系映射接口的集成层,包括JPA,JDO,Hibernate以及IBatis。中间件
OXM组件提供了一个抽象层,支持JAXB,Castor,XMLBeans,JiBX以及XStream等的对象/XML映射实现对象
Java消息服务JMS组件包括了产生和消费消息的功能
事务组件支持实现了专用接口的类以及全部POJO的编程和声明式事务管理。
Web模块: Web层由Web,Web-MVC,WebSocket和Web-Portlet组成。
Web组件提供了基本的面向Web的集成功能,如多部分文件上传功能和用Severlet监听器和基于Web应用程序上下文初始化的IoC容器功能。
Web-MVC组件包括了Spring面向web应用实现的MVC。
Web-Socket组件提供了基于WebSocket,在客户端和服务器之间双向通讯的web应用。
Web-Portlet 组件提供了用于portlet环境的MVC实现以及web-servelt组件功能的镜像。
其余
AOP模块提供了面向切面编程的实现,容许你定义方法拦截器以及切入点来彻底解耦应该分开实现的功能性代码
Aspects 模块提供了和AspectJ的集成,AspectJ是一个强大的,成熟的面向切面编程的框架
Instrumentation 模块提供了类工具支持和用于特定应用服务器的类加载器实现
Messaging 模块提供了对应用中使用的做为WebSocket 子协议的STOMP的支持,这个模块还支持用于路由的注释编程模型和处理从WebSocket客户端来的STOMP消息
Test 模块支持用Junit或者TestNG框架对Spring的组件进行测试