[Spring 3.X 企业应用开发实战 -- 目录](http://blog.csdn.net/puma_dong/article/details/47917461)
[TOC=1,3]
《Spring3.X企业应用开发实战》,陈雄华 林开雄著,电子工业出版社,2012.2出版。
如其名,这是一本偏向讲解如何使用Spring的书,偏向实战的书,是指导我们使用Spring这个基础框架,进行企业开发的最好入门书籍。
在2014年,有幸全部看完,断断续续的,也看了有2个月,收益良多,现在过去1年多了,很多细节已经忘记,不能准确描述出来,不过,如果有应用的场景,依然能从记忆中流出......
# 概述
## 第1章 Spring概述
1.1 认识 Spring
1.2 关于 SpringSource
1.3 Spring 带给我们什么
1.4 Spring 体系结构
1.5 Spring 3.0的新功能
> 核心API更新到 Java 5.0
>
> Spring 表达式语言
>
> 可通过 Java 类提供IoC配置信息
>
> 通用类型转换系统和属性格式化系统
>
> 数据访问层新增OXM功能
>
> Web层的增强
>
> 其他
1.6 Spring 对 Java 版本的要求
1.7 如何获取 Spring
1.8 小结
## 第2章 快速入门
2.1 实例功能概述
> 比 Hello World 更实用的实例
>
> 实例功能简介
2.2 环境准备
> 创建库表
>
> 建立工程
>
> 类包及 Spring 配置文件规划
2.3 持久层
> 建立领域对象
>
> UserDao
>
> LoginLogDao
>
> 在 Spring 中装配 DAO
2.4 业务层
> UserService
>
> 在 Spring 中装配 Service
>
> 单元测试
2.5 展现层
> 配置 Spring MVC 框架
>
> 处理登录请求
>
> JSP视图页面
2.6 运行Web应用
2.7 小结
# IoC 和 AOP
## 第3章 IoC 容器概述
3.1 IoC 概述
> 通过实例理解 IoC 的概念
>
> IoC 的类型
>
> 通过容器完成依赖关系的注入
3.2 相关 Java 基础知识
> 简单实例
>
> 类装载器 ClassLoader
>
> Java 反射机制
3.3 资源访问利器
> 资源抽象接口
>
> 资源加载
3.4 BeanFactory 和 ApplicationContext
> BeanFactory 介绍
>
> ApplicationContext介绍
>
> 父子容器
3.5 Bean 的生命周期
> BeanFactory 中 Bean 的生命周期
>
> ApplicationContext 中 Bean 的生命周期
3.6 小结
## 第4章 在 IoC 容器中装配 Bean
4.1 Spring 配置概述
> Spring 容器高层视图
>
> 基于XML的配置
4.2 Bean 基本配置
> 装配一个Bean
>
> Bean的命名
4.3 依赖注入
> 属性注入
>
> 构造函数注入
>
> 工厂方法注入
>
> 选择注入方式的考量
4.4 注入参数详解
> 字面值
>
> 引用其他 Bean
>
> 内部 Bean
>
> null 值
>
> 级联属性
>
> 集合类型属性
>
> 简化配置方式
>
> 自动装配
4.5 方法注入
> lookup 方法注入
>
> 方法替换
4.6 bean 之间的关系
> 继承
>
> 依赖
>
> 引用
4.7 整合多个配置文件
4.8 Bean 作用域
> singleton 作用域
>
> prototype 作用域
>
> Web 应用环境相关的 Bean 作用域
>
> 作用域依赖问题
4.9 FactoryBean
4.10 基于注解的配置
> 使用注解定义 Bean
>
> 使用注解配置信息启动 Spring 容器
>
> 自动装配 Bean
>
> Bean 作用范围及生命过程方法
4.11 基于 Java 类的配置
> 使用 Java 类提供 Bean 定义信息
>
> 使用基于 Java 类的配置信息启动 Spring 容器
4.12 不同配置方式比较
4.13 小结
## 第5章 Spring 容器高级主题
5.1 Spring 容器技术内幕
> 内部工作机制
>
> BeanDefinition
>
> InstantiationStrategy
>
> BeanWrapper
5.2 属性编辑器
> JavaBean 的编辑器
>
> Spring 默认属性编辑器
>
> 自定义属性编辑器
5.3 使用外部属性文件
> 使用外部属性文件
>
> 使用加密的属性文件
>
> 属性文件自身的引用
5.4 引用 Bean 的属性值
5.5 国际化信息
> 基础知识
>
> MessageSource
>
> 容器级的国际化信息资源
5.6 容器事件
> Spring 事件类结构
>
> 结构 Spring 事件体系的具体实现
>
> 一个实例
5.7 小结
## 第6章 Spring AOP 基础
6.1 AOP 概述
> AOP 到底是什么
>
> AOP 术语
>
> AOP 的实现者
6.2 基础知识
> 带有横切逻辑的实例
>
> JDK 动态代理
>
> CGLib 动态代理
>
> AOP 联盟
>
> 代理知识小结
6.3 创建增强类
> 增强类型
>
> 前置增强
>
> 后置增强
>
> 环绕增强
>
> 异常抛出增强
>
> 引介增强
6.4 创建切面
> 切点类型
>
> 切面类型
>
> 静态普通方法名匹配切面
>
> 静态正则表达式方法匹配切面
>
> 动态切面
>
> 流程切面
>
> 复合切点切面
>
> 引介切面
6.5 自动创建代理
> 实现类介绍
>
> BeanNameAutoProxyCreator
>
> DefaultAdvisorAutoProxyCreator
6.6 小结
## 第7章 基于 @AspectJ 和 Schema 的 AOP
7.1 Spring 对 AOP 的支持
7.2 JDK 5.0 注解知识快速进阶
> 了解注解
>
> 一个简单的注解类
>
> 使用注解
>
> 访问注解
7.3 着手使用 @AspectJ
> 使用前的准备
>
> 一个简单的例子
>
> 如何通过配置使用 @AspectJ 切面
7.4 @AspectJ 语法基础
> 切点表达式函数
>
> 在函数入参中使用通配符
>
> 逻辑运算符
>
> 不同增强类型
>
> 引介增强用法
7.5 切点函数详解
> @annotation()
>
> execution()
>
> args()和@args()
>
> within()
>
> @within()和@target()
>
> target()的this()
7.6 @AspectJ 进阶
> 切点复合运算
>
> 命名切点
>
> 增强织入的顺序
>
> 访问连接点信息
>
> 绑定连接点方法入参
>
> 绑定代理对象
>
> 绑定类注解对象
>
> 绑定返回值
>
> 绑定抛出的异常
7.7 基于Schema 配置切面
> 一个简单切面的配置
>
> 配置命名切点
>
> 各种增强类型的配置
>
> 绑定连接点信息
>
> Advisor配置
7.8 混合切面类型
> 混合使用各种切面类型
>
> 各种切面类型总结
7.9 JVM Class 文件字节码转换基础知识
> java.lang.instrument 包的工作原理
>
> 如何向 JVM 中注册转换器
>
> 使用 JVM 启动参数注册转换器的问题
7.10 使用 LTW 织入切面
> Spring 的 LoadTimeWeaver
>
> 使用 LTW 织入一个切面
>
> 在 Tomcat 下的配置
>
> 在其他Web应用服务器下的配置
7.11 小结
# 数据访问
## 第8章 Spring 对 DAO 的支持
8.1 Spring的DAO理念
8.2 统一的异常体系
> Spring的DAO异常体系
>
> JDBC的异常转换器
>
> 其他持久技术的异常转换器
8.3 统一数据访问模板
> 使用模板和回调机制
> Spring 为不同持久化技术所提供的模板类
8.4 数据源
> 配置一个数据源
> 获取 JNDI 数据源
> Spring 的数据源实现类
8.5 小结
## 第9章 Spring 的事务管理
9.1 数据库事务基础知识
> 何为数据库事务
>
> 数据并发的问题
>
> 数据库锁机制
>
> 事务隔离级别
>
> JDBC对事务支持
9.2 ThreadLocal 基础知识
> ThreadLocal 是什么
>
> ThreadLocal 的接口方法
>
> 一个ThreadLocal实例
>
> 与Thread同步机制的比较
> Spring 使用 ThreadLocal解决线程安全问题
9.3 Spring 对事务管理的支持
> 事务管理关键抽象
>
> Spring 的事务管理器实现类
>
> 事务同步管理器
>
> 事务传播行为
9.4 编程式的事务管理
9.5 使用 XML 配置声明式事务
> 一个将被实施事务增强的服务接口
>
> 使用原始的TransactionProxyFactoryBean
>
> 基于 tx/aop 命名空间的配置
9.6 使用注解配置声明式事务
> 使用 @Transaction 注解
>
> 通过 AspectJ LTW 引入事务切面
9.7 集成特定的应用服务器
> BEA WebLogic
9.8 小结
## 第10章 Spring 的事务管理难点剖析
10.1 DAO 和事务管理的牵绊
> JDBC 访问数据库
>
> Hibernate 访问数据库
10.2 应用分层的迷惑
10.3 事务方法嵌套调用的迷茫
> Spring 事务传播机制回顾
>
> 相互嵌套的服务方法
10.4 多线程的困惑
> Spring 通过单实例化Bean简化多线程问题
>
> 启动独立线程调用事务方法
10.5 联合军种作战的混乱
> Spring 事务管理器的应对
>
> Hibernate+Spring JDBC 混合框架的事务管理
10.6 特殊方法成漏网之鱼
> 哪些方法不能实施 Spring AOP事务
>
> 事务增强遗漏实例
10.7 数据连接泄露
> 底层连接资源的访问问题
>
> Spring JDBC 数据连接泄露
>
> 通过 DataSourceUtils 获取数据连接
>
> JdbcTemplate如何做到对连接泄露的免疫
>
> 使用 TransactionAwareDataSourceProxy
>
> 其他数据访问技术的等价类
10.8 小结
## 第11章 使用 Spring JDBC 访问数据库
11.1 使用 Spring JDBC
> JDBCTemplate 小试牛刀
>
> 在 DAO 中使用 JDBCTemplate
11.2 基本的数据操作
> 更改数据
>
> 返回数据库的表自增主键值
>
> 批量更改数据
>
> 查询数据
>
> 查询单值数据
>
> 调用存储过程
11.3 BLOB/CLOB 类型数据的操作
> 如何获取本地数据连接
>
> 相关的操作接口
>
> 插入 Lob 类型的数据
>
> 以块数据方式读取 Lob 数据
>
> 以流数据方式读取 Lob 数据
11.4 自增键和行集
> 自增键的使用
>
> 如何规划主键方案
>
> 以行集返回数据
11.5 其他类型的 JDBCTemplate
> NamedParameterJDBCTemplate
>
> SimpleJDBCTemplate
11.6 以 OO 方式访问数据库
> 使用 MappingSqlQuery 查询数据
>
> 使用 SqlUpdate 更新数据
>
> 使用 StoredProcedure 执行存储过程
>
> SqlFunction 类
11.7 小结
## 第12章 整合其他ORM框架
12.1 Spring 整合ORM技术
12.2 在 Spring 中 使用Hibernate
> 配置 SessionFactory
>
> 使用 HibernateTemplate
>
> 处理 Lob 类型数据
>
> 添加 Hibernate 事件监听器
>
> 使用原生 Hibernate API
>
> 使用注解配置
>
> 事务处理
>
> 延迟加载的问题
12.3 在 Spring 中使用 MyBatis
> 配置 SqlMapClient
>
> 在 Spring 配置 MyBatis
>
> 编写 MyBatis 的DAO
12.5 DAO 层设计
> DAO基类的设计
>
> 查询接口方法的设计
>
> 分页查询接口设计
12.6 小结
# 业务层及Web层技术
## 第13章 任务调度和异步执行器
13.1 任务调度概述
13.2 Quartz 快速进阶
> Quartz 基础结构
>
> 使用 SimpleTrigger
>
> 使用 CronTrigger
>
> 使用调度信息存储
13.3 在 Spring 中使用 Quartz
> 创建 JobDetail
>
> 创建 Trigger
>
> 创建 Scheduler
13.4 Spring 中使用 JDK Timer
> Timer 和 TimerTask
>
> Spring 对JDK Timer 的支持
13.5 Spring 对JDK 5.0 Executor 的支持
> 了解 JDK 5.0 的 Executor
>
> Spring 对 Executor 所提供的抽象
13.6 实际应用中的任务调度
> 如何产生任务
>
> 任务调度对应用程序集群的影响
>
> 任务调度云
>
> Web 应用程序中调度器的启动和关闭问题
13.7 小结
## 第14章 使用 OXM 进行对象 XML 映射
14.1 认识 XML 解析技术
> 什么是 XML
>
> XML 的处理技术
14.2 XML 处理利器:XStream
> XStream 概述
>
> 快速入门
>
> 使用 XStream 别名
>
> XStream 转换器
>
> XStream 注解
>
> 流化对象
>
> 持久化 API
>
> 额外功能:处理 JSON
14.3 其他常见 O/X Mapping开源项目
> JAXB
>
> XMLBeans
>
> Castor
>
> JiBX
>
> 总结比较
14.4 与 Spring OXM 整合
> Spring OXM 概述
>
> 整合 OXM 实现者
>
> 如何在 Spring 中进行配置
>
> Spring OXM 简单实例
14.5 小结
## 第15章 Spring MVC
15.1 Spring MVC 概述
> 体系结构
>
> 配置 DispatcherServlet
>
> 一个简单的实例
15.2 注解驱动的控制器
> 使用 @RequestMapping 映射请求
>
> 请求处理方法签名概述
>
> 处理方法签名详细说明
>
> 使用 HttpMessageConverter
>
> 处理模型数据
15.3 处理方法的数据绑定
> 数据绑定流程剖析
>
> 数据转换
>
> 数据格式化
>
> 数据校验
15.4 视图和视图解析器
> 认识视图
>
> 认识视图解析器
>
> JSP 和 JSTL
>
> 模板视图
>
> Excel
>
> PDF
>
> 输出 XML
>
> 输出 JSON
>
> 使用 XmlViewResolver
>
> 使用 ResourceBundleViewResolver
>
> 混合使用多种视图技术
15.5 本地化解析
> 本地化概述
>
> 使用 CookieLocaleResolver
>
> 使用 SessionLocaleResolver
>
> 使用 LocaleChangeInterceptor
15.6 文件上传
> 配置 MultipartResolver
>
> 编写控制器和文件上传表单页面
15.7 杂项
> 静态资源处理
>
> 装配拦截器
>
> 异常处理
15.8 小结
# 测试及实战
## 第16章 实战型单元测试
16.1 单元测试概述
> 为什么需要单元测试
>
> 单元测试之无解
>
> 单元测试之困境
>
> 单元测试基本概念
16.2 JUnit 4 快速进阶
> JUnit 4 概述
>
> JUnit 4 生命周期
>
> 使用 JUnit 4
16.3 模拟利器 Mockito
> 模拟测试概述
>
> 创建 Mock 对象
>
> 设定 Mock 对象的期望行为及返回值
>
> 验证交互行为
16.4 测试整合之王 Unitils
> Unitils 概述
>
> 集成 Spring
>
> 集成 Hibernate
>
> 集成 Dbunit
>
> 自定义扩展模块
16.5 使用 Unitils 测试 DAO 层
> 数据库测试的难点
>
> 扩展 Dbunit 用 Excel 准备数据
>
> 测试实战
16.6 使用 Unitils 测试 Service 层
16.7 测试 Web 层
> 对 LoginController 进行单元测试
>
> 使用 Spring Servlet API 模拟对象
>
> 使用 Spring RestTemplate 测试
>
> 使用 Selenium 测试
16.8 小结
## 第17章 实战案例开发
17.1 论坛案例概述
> 论坛整体功能结构
>
> 论坛用例概述
>
> 主要功能流程概述
17.2 系统设计
> 技术框架选择
>
> Web 目录结构及类包结构规划
>
> 单元测试类包结构规划
>
> 系统的结构图
>
> PO 的类设计
>
> 持久层设计
>
> 服务层设计
>
> Web层设计
>
> 数据库设计
17.3 开发前的准备
17.4 持久层开发
> PO 类
>
> DAO 基类
>
> 通过扩展基类所定义 DAO 类
>
> DAO Bean 的装配
>
> 使用 Hibernate 二级缓存
17.5 对持久层进行测试
> 配置 Unitils 测试环境
>
> 准备测试数据库及测试数据
>
> 编写 DAO 测试基类
>
> 编写 BoardDao 测试用例
17.6 服务层开发
> UserService 的开发
>
> ForumService 的开发
>
> 服务类 Bean 的装配
17.7 对服务层进行测试
> 编写 Service 测试基类
>
> 编写 ForumService 测试用例
17.8 Web 层开发
> BaseController 的基类
>
> 用户登录和注销
>
> 用户注册
>
> 论坛管理
>
> 论坛普通功能
>
> 分页展示论坛版块的主题帖子
>
> web.xml 配置
>
> Spring MVC配置
17.9 对 Web 层进行测试
> 编写 Web 测试基类
>
> 编写 ForumManageController 测试用例
17.10 部署和运行应用
17.11 小结