## 1.2 模块
Spring Framework 包含了很多特性,并且组织成 20 个模块。这些模块分为核心容器, 数据访问/整合,Web,AOP(Aspect Oriented Programming,面向切面编程),基础组件和测 试,在下图中来展示这些模块。
![image](https://box.kancloud.cn/2016-01-25_56a5852624bc5.jpg)
Spring 框架概要
### 1.2.1 核心容器
核心容器(4.1 节)包含了核心(Core),Bean 组件(Beans),上下文(Context)和表 达式语言(Expression Language)模块。
核心和 Bean(4.1 节)模块提供了框架部分的基础,包含 IoC 和依赖注入特性。
BeanFactory 是工厂模式的精密实现。它去掉了编程实现单例的需要,并允许你解除配置 信息,以及实际程序逻辑的特定依赖之间的耦合。
上下文(4.14 节)模块构建了由核心和 Bean(4.1 节)模块提供的坚实基础:它可以让 你以框架中的风格来访问对象,这和 JNDI 的注册是相似的。上下文模块集成了来自 Bean 模块的特性,并且加入了对国际化(比如使用资源束)的支持,事件传播,资源加载和 Servlet容器显式创建上下文。上下文模块也支持 Java EE 特性,比如 EJB,JMX 和基本的远程调用。
ApplicationContext 接口是上下文模块的焦点。
表达式语言(第 7 章)模块提供了强大的表达式语言,在运行时查询和操作对象图。这 是 JSP 2.1 规范中的统一表达式语言(Unified EL)的一个扩展。该表达式语言支持设置和获取属性值,属性定义,方法调用,访问数组,集合以及索引的上下文。支持逻辑和数字运算, 命名变量。还支持从 Spring 的 IoC 容器中以名称来获取对象。它也支持 list 的投影和选择操作,还有普通的 list 聚集。
### 1.2.2 数据访问/整合
数据访问/整合层由 JDBC,ORM,OXM,JMS 和事务模块组成。
JDBC(13.1 节)模块提供了 JDBC 抽象层,它移除了冗长的 JDBC 编码,但解析了数据库 提供商定义的特定错误代码。
ORM(14.1 节)模块提供了对流行的对象-实体映射 API 的整合层,包含 JPA(14.5 节),JDO(14.4 节),Hibernate(14.3 节)和 iBatis(14.6 节)。使用 ORM 包你就可以使用全部的O/R-映射框架并联合其它 Spring 提供的特性,比如之前所提到的简单声明式的事务管理特性。
OXM(第 15 章)模块提供了支持 JAXB,Castor,XMLBeans,JiBX,以及 Xstream 对对象/XML 映射实现的抽象层。
Java 消息服务(JMS,第 22 章)模块包含生成和处理消息的特性。
事务(第 11 章)模块支持对实现特定接口的类和所有 POJO(普通 Java 对象)的编程 式和声明式的事务管理。
### 1.2.3 Web
Web 层由 Web,Web-Servlet,Web-Struts 和 Web-Portlet 模块组成。
Spring 的 Web 模块提供了基本的面向 Web 整合的特性,比如文件上传功能,IoC 容器 的初始化使用了 Servlet 的监听器和变形的 Web 应用上下文。它还包含了和 Web 相关的 Spring远程调用支持的部分。
Web-Servlet 模块包含了 Spring 对 Web 应用的模型-视图-控制器(MVC,16.1 节)模式 的实现。Spring 的 MVC 框架提供了一个在领域模型代码和 Web 表单之间的整洁分离,并且 整合了其它所有 Spring 框架的特性。
Web-Struts 模块包含了使用 Spring 应用程序整合经典的 Strtus Web 层的支持类。要注意 这个支持从 Spring 3.0 开始就废弃了。那么可以考虑迁移应用程序到 Struts 2.0 和 Spring 的整 合或者是单纯的 Spring MVC 方案。
Web-Portlet 模块提供用于 portlet 环境和 Web-Servlet 模块功能镜像的 MVC 实现。
### 1.2.4 AOP 和基础组件
Spring 的 AOP(8.1 节)模块提供了 AOP 联盟-允许的的面向切面的编程实现,允许你定 义如方法-拦截器和横切点来整洁地解耦应该被分离的功能实现代码。使用源代码级的元数 据功能,也可以混合行为信息到代码中,这个方式和.NET 的属性很相似。
分离的 Aspects 模块提供对 AspectJ 的整合。
基础组件模块提供了对类的基础支持,还有类加载器的实现来用于特定的应用服务器。
### 1.2.5 测试
测试模块支持 Spring 组件,Junit 或 Test NG 的测试。它提供了 Spring 应用上下文的一致 加载并缓存这些上下文内容。它也提供 mock 对象,你可以用来孤立地测试代码。
- 第一部分 Spring framework 概述
- 第 1 章 Spring Framework 介绍
- 1.1 依赖注入和控制反转
- 1.2 模块
- 1.3 使用方案
- 第二部分 Spring 3 的新特性
- 第 2 章 Spring 3.0 的新特性和增强
- 2.1 Java 5
- 2.2 改进的文档
- 2.3 新的文章和教程
- 2.4 新的模块组织方式和系统构建方式
- 2.5 新特性概述
- 第 3 章 Spring 3.1 的新特性和增强
- 3.1 新特性概述
- 第三部分 核心技术
- 第 4 章 IoC 容器
- 4.1 Spring IoC 容器和 bean 的介绍
- 4.2 容器概述
- 4.3 Bean 概述
- 4.4 依赖
- 4.5 Bean 的范围
- 4.6 自定义 bean 的性质
- 4.7 Bean 定义的继承
- 4.8 容器扩展点
- 4.9 基于注解的容器配置
- 4.10 类路径扫描和管理的组件
- 4.11 使用 JSR 330 标准注解
- 4.12 基于 Java 的容器配置