Spring 是模块化的,可分为4大部分,约20个模块。部分模块可以在自己的项目中按需使用。
核心部分
核心容器由spring-core、spring-beans、spring-context、spring-express等模块组成。
- spring-core:框架的基本组成部分,包括控制反转(IoC)的实现
- spring-beans:提供BeanFactory,工厂模式的实现
- spring-context:给spring提供一个运行时环境,用以保存各个对象的状态
- spring-express:提供了强大的表达式语言,用于在运行时查询和操作对象图。支持使用若干种方式从Spring的IoC容器中检索对象、列表的投影、选择以及聚合,这若干种方法包括:set和get属性值、属性赋值、方法调用、访问数组集合及索引内容、逻辑算数运算、命名变量、名字等。
数据访问
数据访问层包括JDBC、对象关系映射(ORM)、对象XML映射(OXM)、java消息服务(Java Message Service、JMS)、事务处理模块(Transactions)
- JDBC:JDBC抽象层
- ORM:对流行的对象关系映射API的集成,包括JPA、JDO和Hibernate等,通过此模块可以让这些ORM框架和Spring的其他功能整合
- OXM:实现了XML映射的功能,提供了对OXM的支持,比如JAXB、XML Beans等。
- JMS:包含了生产和消费消息的功能,从spring4.1开始,集成了spring-message模块
- 事务管理:为实现特殊接口及所有POJO支持编程式和声明式事务管理(注:编程式事务需要自己写 beginTransaction()、commit()、rollback() 等事务管理方法,声明式事务是通过注解或配置由 spring 自动处理,编程式事务力度更细)
Web
web层是由Web、Web-MVC、Web-Socket和Web-Portlet组成
- Web:提供面向 web 的基本功能和面向 web 的应用上下文
- Web-MVC:为web应用提供了模型使用控制和REST Web服务的实现。
- Web-Socket:为 WebSocket-based 提供了支持,而且在 web 应用程序中提供了客户端和服务器端之间通信的两种方式
- Web-Portlet:提供了用于 Portlet 环境的 MVC 实现,并反映了 spring-webmvc 模块的功能。
其他
- AOP 模块提供了面向方面(切面)的编程实现,允许你定义方法拦截器和切入点对代码进行干净地解耦,从而使实现功能的代码彻底的解耦出来。使用源码级的元数据,可以用类似于.Net属性的方式合并行为信息到代码中。
- Aspects 模块提供了与 AspectJ 的集成,这是一个功能强大且成熟的面向切面编程(AOP)框架。
- 测试模块支持对具有 JUnit 或 TestNG 框架的 Spring 组件的测试。