目錄
第1章 POJO編程模型、輕量級容器和控製反轉 1
1.1 POJO編程模型 2
1.1.1 原來的EJB編程模型所存在的問題 2
1.1.2 POJO編程模型的優點 7
1.2 輕量級容器和控製反轉 8
1.2.1 輕量級容器 8
1.2.2 控製反轉 9
1.3 依賴注入 10
1.3.1 Setter注入 11
1.3.2 構造函數注入 11
1.3.3 Setter注入或構造函數注入 11
1.4 小結 12
1.5 習題 12
1.6 本章主要知識點 12
第2章 使用Spring進行依賴注入 15
2.1 Spring IoC容器 16
2.1.1 配置元數據 16
2.1.2 配置和使用容器 18
2.2 依賴注入 28
2.2.1 Setter注入 28
2.2.2 構造函數注入 29
2.2.3 循環依賴 32
2.2.4 依賴解析過程 33
2.2.5 重寫Bean定義 34
2.2.6 使用depends-on特性 36
2.2.7 自動裝配 37
2.2.8 Bean查找 41
2.3 Spring管理的Bean 42
2.3.1 命名Bean 42
2.3.2 Bean實例化方法 43
2.3.3 Bean作用域 46
2.3.4 延遲初始化 49
2.3.5 生命周期迴調 50
2.3.6 Bean定義配置文件 52
2.3.7 環境 54
2.4 小結 57
2.5 習題 58
2.6 本章主要知識點 58
第3章 使用Spring MVC構建 Web應用程序 61
3.1 學習Spring MVC的功能和優點 62
3.2 使用Dispatcher Servlet機製 63
3.2.1 定義Servlet 64
3.2.2 訪問Servlet上下文 65
3.3 創建第一個Spring MVC應用程序 65
3.4 使用注解配置Spring MVC 69
3.5 使用JSP處理錶單 70
3.5.1 配置錶單標簽庫 71
3.5.2 理解綁定的強大功能 72
3.5.3 使用錶單 72
3.5.4 使用輸入元素 73
3.5.5 輸入日期 74
3.5.6 使用下拉框進行選擇 74
3.5.7 使用單選按鈕進行選擇 75
3.5.8 使用復選框進行選擇 76
3.5.9 添加標簽 76
3.5.10 放置按鈕 76
3.5.11 樣式 76
3.6 使用注解的強大功能 81
3.6.1 @Controller 82
3.6.2 @RequestMapping 82
3.6.3 @ModeAttribute 82
3.6.4 @PathVariable 82
3.6.5 @ControllerAdvice 83
3.6.6 @InitBinder 83
3.6.7 @ExceptionHandler 83
3.7 驗證用戶輸入 83
3.8 上傳文件 88
3.9 處理異常 91
3.10 實現國際化(i18n) 92
3.11 使用主題 94
3.12 小結 97
3.13 習題 97
3.14 本章主要知識點 98
第4章 使用Spring進行JDBC數據訪問 101
4.1 使用普通JDBC所帶來的問題 102
4.2 引入Spring的JDBC支持 103
4.2.1 管理JDBC連接 103
4.2.2 配置和使用Spring的JDBC支持 109
4.3 使用Spring執行數據訪問操作 112
4.3.1 執行查詢 112
4.3.2 使用命名參數進行查詢 115
4.3.3 使用In子句編寫查詢 116
4.3.4 在JdbcTemplate中使用PreparedStatements 117
4.3.5 插入、更新和刪除記錄 119
4.3.6 調用存儲過程和存儲函數 122
4.3.7 執行批處理操作 124
4.3.8 處理BLOB和CLOB對象 124
4.3.9 訪問特定於供應商的 JDBC 方法 125
4.3.10 執行DDL操作 125
4.4 將JDBC操作模塊化為Java對象 126
4.4.1 封裝SQL查詢執行 126
4.4.2 封裝SQL DML操作 128
4.4.3 封裝存儲過程執行 129
4.5 異常處理和錯誤代碼轉換 130
4.5.1 常見的數據訪問異常層次結構 130
4.5.2 SQLException的自動處理和轉換 131
4.6 小結 131
4.7 習題 132
4.8 本章主要知識點 132
第5章 通過Spring使用JPA進行數據訪問 135
5.1 概述ORM和JPA 136
5.1.1 範式不匹配 136
5.1.2 ORM框架的構建塊 137
5.1.3 JPA所提供的功能 137
5.1.4 將對象模型映射到關係模型 137
5.1.5 將Java類型映射到SQL類型 142
5.1.6 配置和使用JPA 144
5.2 Spring的JPA支持 153
5.2.1 在Spring容器中設置JPA 153
5.2.2 基於純JPA實現DAO 158
5.2.3 處理和轉換異常 163
5.2.4 在Spring環境中進一步配置JPA 165
5.3 小結 168
5.4 習題 169
5.5 本章主要知識點 169
第6章 使用Spring管理事務 171
6.1 理解事務管理 172
6.2 Spring的事務抽象模型 175
6.2.1 本地事務與全局事務 177
6.2.2 PlatformTransaction Manager實現 178
6.2.3 Spring的抽象事務模型的優點 178
6.3 使用Spring進行聲明式事務管理 179
6.3.1 將服務層與數據訪問技術細節進行隔離 182
6.3.2 自定義默認的事務行為 184
6.3.3 在類級彆使用@Transactional 185
6.3.4 理解事務傳播規則 186
6.3.5 使用進行聲明式事務管理 190
6.4 使用Spring進行編程式事務管理 193
6.5 在事務之前或者之後執行自定義邏輯 198
6.5.1 通知事務性操作 199
6.5.2 使用Transaction Synchronization執行事務後的邏輯 200
6.6 小結 201
6.7 習題 201
6.8 本章主要知識點 201
第7章 使用Spring進行測試驅動開發 203
7.1 配置和緩存ApplicationContext 204
7.1.1 在測試中使用基於XML和基於Java的上下文配置 204
7.1.2 使用Application ContextInitializer配置上下文 207
7.1.3 繼承上下文配置 208
7.1.4 ApplicationContext緩存 210
7.2 注入測試夾具的依賴項 211
7.3 在測試中使用事務管理 213
7.4 測試Web應用程序 216
7.4.1 測試中的上下文層次結構 218
7.4.2 測試Request和Session作用域的Bean 219
7.4.3 測試Spring MVC項目 221
7.5 使用Mock對象以及其他用於測試的實用工具 225
7.5.1 Spring針對測試所提供的Mock對象 226
7.5.2 其他實用工具和測試注解 226
7.6 小結 227
7.7 習題 227
7.8 本章主要知識點 228
第8章 使用Spring進行麵嚮方麵編程 229
8.1 在Spring中開始使用AOP 230
8.2 熟悉通知的類型 235
8.2.1 Before 236
8.2.2 After Returning 236
8.2.3 After Throwing 236
8.2.4 After(Finally) 237
8.2.5 Around 238
8.3 定義切入點指示符 239
8.3.1 類型簽名錶達式 240
8.3.2 方法簽名錶達式 240
8.3.3 其他替代的切入點指示符 240
8.4 利用注解的強大功能 241
8.4.1 @Before 241
8.4.2 @PointCut 242
8.4.3 @After 243
8.4.4 @AfterReturning 243
8.4.5 @AfterThrowing 244
8.4.6 @Aspect 244
8.4.7 @Around 244
8.4.8 @DeclareParents 245
8.5 將ApectJ和Spring融閤在一起 246
8.6 使用注解配置Spring AOP 250
8.7 小結 251
8.8 習題 251
8.9 本章主要知識點 252
第9章 Spring錶達式語言 253
9.1 使用SpEL配置應用程序 254
9.2 創建一個分析器 256
9.3 調用方法 260
9.3.1 調用構造函數 262
9.3.2 調用靜態方法 263
9.4 使用變量和函數 263
9.4.1 #root 263
9.4.2 #this 264
9.4.3 訪問係統屬性和環境 264
9.4.4 內聯列錶 264
9.4.5 注冊函數 265
9.5 瞭解SpEL運算符 265
9.5.1 關係運算符 266
9.5.2 算術運算符 266
9.5.3 邏輯運算符 266
9.5.4 條件運算符 267
9.5.5 正則錶達式運算符 268
9.5.6 安全導航運算符 269
9.5.7 集閤選擇和投影 269
9.5.8 選擇集閤中的第一個和最後一個元素 270
9.6 使用SpEL中的實用工具 271
9.6.1 訪問Spring Bean 271
9.6.2 271
9.6.3 緩存中的錶達式 272
9.7 小結 272
9.8 習題 272
9.9 本章主要知識點 272
第10章 緩存 275
10.1 創建第一個緩存應用程序 276
10.1.1 使用一個不同的名稱配置緩存管理器 279
10.1.2 使用注解配置緩存抽象 279
10.2 使用緩存注解 280
10.2.1 @Cacheable 280
10.2.2 @CacheEvict 282
10.2.3 @CachePut 282
10.2.4 @Caching 282
10.3 實現緩存管理器 283
10.3.1 SimpleCacheManager 283
10.3.2 NoOpCacheManager 284
10.3.3 ConcurrentMap CacheManager 284
10.3.4 CompositeCache Manager 284
10.4 將SpEL投射到緩存中 285
10.5 以編程方式初始化緩存 286
10.6 尋找替換的緩存提供程序 288
10.6.1 Ehcache 288
10.6.2 Guava 292
10.6.3 Hazelcast 292
10.7 小結 293
10.8 習題 293
10.9 本章主要知識點 294
第11章 使用Spring開發REST風格的Web服務 295
11.1 創建第一個REST Web服務 296
11.2 從REST Web服務返迴不同的HTTP狀態碼 307
11.3 學習一種基於注解的配置替換方法 308
11.4 通過XML使用REST Web服務 309
11.5 使用異常處理機製 312
11.6 對REST風格的服務進行單元測試 315
11.7 小結 318
11.8 習題 318
11.9 本章主要知識點 318
第12章 使用Spring Security保護Web應用程序的安全 321
12.1 為什麼要使用Spring Security 322
12.2 Spring Security的功能 323
12.3 配置和使用Spring Security 324
12.4 理解Spring Security的基礎構建基塊 330
12.5 對用戶進行身份驗證 331
12.5.1 不成功的登錄流程 331
12.5.2 成功的登錄流程 332
12.5.3 匿名身份驗證 333
12.5.4 自定義登錄頁麵 334
12.5.5 注銷過程 335
12.5.6 使用JDBC訪問UserDetails 336
12.5.7 對密碼進行加密 339
12.5.8 Remember-Me支持 339
12.5.9 用戶會話管理 341
12.5.10 基本身份驗證 342
12.6 授權Web請求和服務方法調用 343
12.6.1 授權Web請求 343
12.6.2 授權是如何工作的 345
12.6.3 基於錶達式的授權 347
12.6.4 使用JSP安全標記 348
12.6.5 授權服務方法 349
12.7 小結 353
12.8 習題 354
12.9 本章主要知識點 354
第13章 Spring 4.0 357
13.1 跟上最新技術:Java 8和Java EE7支持 357
13.2 使用條件依賴項配置注入 362
13.3 對自動配置集閤中的元素進行排序 365
13.4 重復的注解 367
13.5 引入新的注解 369
13.6 小結 370
13.7 習題 370
13.8 本章主要知識點 370
附錄A 參考答案 371
· · · · · · (
收起)