Spring 模块和 Spring Portfolio

3.1 Spring 模块

在 Spring 4.0 中,Spring 框架的发布版本包括了 20个不同的模块,每个模块会有 3 个 JAR 文件(二进制类库、源码的 JAR 文件以及 JavaDoc 的 JAR 文件)。

20 个不同的模块依据所属的功能可以划分为以下 6 类不同的功能。
Spring 模块和 Spring Portfolio

①、Spring 核心容器

容器是 Spring 框架最核心的部分,它管理着 Spring 应用中 bean 的创建、配置和管理

它包括:①、Spring bean 工厂,为 Spring 提供了 DI 的功能。②、Spring 应用上下文的实现,每一种都提供了配置 Spring 的不同方式。③、企业服务,如:E-mail、JNDI 访问、EJB 集成和调度。

总之,所有的 Spring 模块都构建于核心容器之上。

②、Spring 的 AOP 模块

在 AOP 模块中,Spring 对面向切面编程提供了丰富的支持。这个模块是 Spring 应用系统中开发切面的基础。与 DI 一样,AOP 可以帮助应用对象解耦。借助于 AOP,可以将遍布系统的关注点(例如:事务和安全)从它们所应用的对象中解耦出来

③、数据访问与集成

Spring 的 JDBC 和 DAO 模块抽象了这些样板式代码,使我们的数据库代码变得简明了,还可以避免因为关闭数据库资源失败而引发的问题

对于更喜欢 ORM 工具而不愿意直接使用 JDBC 的开发者,Spring 提供了 ORM 模块。Spring 的 ORM 模块建立在对 DAO 的支持之上,并为多个 ORM 框架提供了一种构建 DAO 的简便方式。

Spring 没有去创建自己的 ORM 解决方案,而是对许多流行的 ORM 框架进行了集成,包括 Hibernate、Java Persisternce API、Java Data Object 和 iBATIS SQL Map。Spring 的事务管理支持所有的 ORM 框架以及 JDBC。

本模块同样包含了在 JMS(Java Message Service) 之上构建的 Spring 抽象层,它会使用消息以异步的方式与其他应用集成。Spring 3.0 开始,还包含了对象到 XML 映射的特性,它最初是 Spring Web Service 项目的一部分。

④、Web 与远程调用

MVC(Model-View-Controller)模式,它可以帮助用户将界面逻辑与应用逻辑分离
流行的MVC 框架:Apache 的 Struts、JSF、WebWorkTapestry

虽然 Spring 能够与多种流行的 MVC 框架进行集成,但它的 Web 和远程调用模块自带了一个强大的 MVC 框架,有助于在 Web 层提升应用的松耦合水平

除了面向用户的 Web 应用,该模块还提供了多种构建与其他应用交互的远程调用方案
Spring 远程调用功能集成了 RMI、Hessian、Burlap、JAX-WS,同时 Spring 还自带了一个远程调用框架:HTTP invoker。Spring 还提供了暴露和使用 REST API 的良好支持

⑤、Instrumentation

该模块提供了为 JVM 添加代理的功能。具体来讲,它为 Tomcat 提供了一个织入代理,能够为 Tomcat 传递类文件,就像这些文件是被类加载器加载的一样。使用场景非常有限。

⑥、测试

Spring 为使用 JNDI、Servlet 和 Portlet 编写单元测试提供了一系列的 mock 对象实现
对于集成测试,该模块为加载 Spring 应用上下文中的 bean 集合以及与 Spring 上下文中的 bean 进行交互提供了支持。


3.2 Spring Portfolio

Spring portfolio 包括多个构建于核心 Spring 框架之上的框架和类库。也就是说,整个 Spring portfolio 几乎为每一个领域的 Java 开发都提供了 Spring 编程模型。

Spring Web Flow

建立于 Spring MVC 框架之上,它为基于流程的会话式 Web 应用提供支持
相关网址:http://projects.spring.io/spring-webflow/

Spring Web Service

提供了契约优先的 Web Service 模型,服务的实现都是为了满足服务的契约而编写的。
相关网址:http://docs.spring.io/spring-ws/site/

Spring Security

为 Spring 应用提供了声明式的安全机制
相关网址:http://projects.spring.io/spring-security/

Spring Integration

提供了多种通用应用集成模式的 Spring 声明式风格实现
相关网址:http://projects.spring.io/spring-integration/

Spring Batch

如果需要开发一个批处理应用,可以通过 Spring Batch,使用 Spring 强大的面向 POJO 的编程模型。
相关网址:http://projects.spring.io/ spring-batch/

Spring Data

不管你使用文档数据库,如 MongoDB;图数据库,如 Neo4j;还是传统的关系型数据库,Spring Data 都为持久化提供了一种简单的编程模型。这包括为多种数据库类型提供了一种自动化的 Repository 机制,它负责为你创建 Repository 的实现。

Spring Social

Spring 的一个社交网络扩展模块。
它更多的是关注连接,而不是社交。它能够帮助你通过 REST API 连接 Spring 应用,其中有些 Spring 应用可能原本并没有任何社交方面的功能目标。

入门指南:https://spring.io/guides/gs/accessing-facebook/https://spring.io/guides/gs/accessing-twitter/

Spring Mobile

是 Spring MVC 新的扩展模块,用于支持移动 Web 应用开发

Spring for Android

与 Spring Mobile 相关的是 Spring Android 项目。这个项目,旨在通过 Spring 框架为开发基于 Android 设备的本地应用提供某些简单的支持。
相关网址:http://projects.spring.io/spring-android/

Spring Boot

Spring Boot 大量依赖于自动配置技术,它能消除大部分 Spring 配置。它还提供了多个 Starter 项目,不管你使用 Maven 还是 Gradle,这都能减少 Spring 工程构建文件的大小

上一篇:Spring 容器–如何创建和加载一个 Spring 容器?
下一篇:Spring 的新功能