[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 小結