內容簡介
《Spring實戰(第3版)》從核心的Spring、Spring應用程式的核心組件、Spring集成3個方面,由淺入深、由易到難地對Spring展開了系統的講解,包括Spring之旅、裝配Bean、面向切面的Spring、征服資料庫、事務管理、使用Spring MVC構建Web應用程式、使用Spring Web Flow、保護Spring套用、使用遠程服務、為Spring添加REST功能、Spring訊息、使用JMX管理Spring Bean以及其他Spring技巧等內容。
《Spring實戰(第3版)》不僅僅介紹了使用Spring框架進行開發必須掌握的核心概念,還在此基礎上深入介紹了Spring應用程式的常用組件,並為讀者展現了Spring如何與其他的套用、服務進行企業級集成。本書並不沒有為讀者詳細地列出Spring API,而是通過提供豐富又實用的代碼示例,來真正展示Spring框架的強大──它能夠使企業級應用程式的開發更簡單。
圖書目錄
第 一部分 Spring的核心
第 1章 Spring之旅 2
1.1 簡化Java開發 3
1.1.1 激發POJO的潛能 4
1.1.2 依賴注入 5
1.1.3 套用切面 9
1.1.4 使用模板消除樣板式代碼 13
1.2 容納你的Bean 15
1.2.1 與套用上下文共事 16
1.2.2 Bean的生命周期 17
1.3 俯瞰Spring風景線 19
1.3.1 Spring模組 19
1.3.2 Spring Portfolio 22
1.4 Spring新功能 25
1.4.1 Spring 2.5新特性 26
1.4.2 Spring 3.0新特性 26
1.4.3 Spring Portfollo新特性 27
1.5 小結 28
第 2章 裝配Bean 29
2.1 聲明Bean 30
2.1.1 創建Spring配置 30
2.1.2 聲明一個簡單Bean 31
2.1.3 通過構造器注入 33
2.1.4 Bean的作用域 37
2.1.5 初始化和銷毀Bean 38
2.2 注入Bean屬性 40
2.2.1 注入簡單值 41
2.2.2 引用其他Bean 42
2.2.3 使用Spring的命名空間p裝配屬性 45
2.2.4 裝配集合 46
2.2.5 裝配空值 50
2.3 使用表達式裝配 51
2.3.1 SpEL的基本原理 51
2.3.2 在SpEL值上執行操作 54
2.3.3 在SpEL中篩選集合 58
2.4 小結 62
第3章 **小化Spring XML配置 63
3.1 自動裝配Bean屬性 64
3.1.1 4種類型的自動裝配 64
3.1.2 默認自動裝配 68
3.1.3 混合使用自動裝配和顯式裝配 68
3.2 使用註解裝配 69
3.2.1 使用@Autowired 70
3.2.2 藉助@Inject實現基於標準的自動裝配 74
3.2.3 在註解注入中使用表達式 76
3.3 自動檢測Bean 77
3.3.1 為自動檢測標註Bean 78
3.3.2 過濾組件掃描 79
3.4 使用Spring基於Java的配置 80
3.4.1 創建基於Java的配置 80
3.4.2 定義一個配置類 81
3.4.3 聲明一個簡單的Bean 81
3.4.4 使用Spring的基於Java的配置進行注入 82
3.5 小結 83
第4章 面向切面的Spring 84
4.1 什麼是面向切面編程 85
4.1.1 定義AOP術語 86
4.1.2 Spring對AOP的支持 88
4.2 使用切點選擇連線點 90
4.2.1 編寫切點 91
4.2.2 使用Spring的bean( )指示器 92
4.3 在XML中聲明切面 93
4.3.1 聲明前置和後置通知 94
4.3.2 聲明環繞通知 96
4.3.3 為通知傳遞參數 98
4.3.4 通過切面引入新功能 100
4.4 註解切面 102
4.4.1 註解環繞通知 104
4.4.2 傳遞參數給所標註的通知 105
4.4.3 標註引入 105
4.5 注入AspectJ切面 107
4.6 小結 109
第 二部分 Spring應用程式的核心組件
第5章 征服資料庫 112
5.1 Spring的數據訪問哲學 113
5.1.1 了解Spring的數據訪問異常體系 114
5.1.2 數據訪問模板化 116
5.1.3 使用DAO支持類 118
5.2 配置數據源 119
5.2.1 使用JNDI數據源 119
5.2.2 使用數據源連線池 120
5.2.3 基於JDBC驅動的數據源 121
5.3 在Spring中使用JDBC 122
5.3.1 應對失控的JDBC代碼 122
5.3.2 使用JDBC模板 125
5.4 在Spring中集成Hibernate 130
5.4.1 Hibernate概覽 131
5.4.2 聲明Hibernate的Session工廠 132
5.4.3 構建不依賴於Spring的Hibernate代碼 134
5.5 Spring與Java持久化API 136
5.5.1 配置實體管理器工廠 136
5.5.2 編寫基於JPA的DAO 140
5.6 小結 142
第6章 事務管理 144
6.1 理解事務 145
6.1.1 用4個詞來表示事務 146
6.1.2 理解Spring對事務管理的支持 147
6.2 選擇事務管理器 147
6.2.1 JDBC事務 149
6.2.2 Hibernate事務 149
6.2.3 Java持久化API事務 150
6.2.4 JTA(Java Transaction API)事務 151
6.3 在Spring中的編碼事務 151
6.4 聲明式事務 153
6.4.1 定義事務屬性 154
6.4.2 在XML中定義事務 157
6.4.3 定義註解驅動的事務 159
6.5 小結 160
第7章 使用Spring MVC構建Web應用程式 162
7.1 Spring MVC起步 163
7.1.1 跟蹤Spring MVC的請求 163
7.1.2 搭建Spring MVC 165
7.2 編寫基本的控制器 166
7.2.1 配置註解驅動的Spring MVC 167
7.2.2 定義首頁的控制器 168
7.2.3 解析視圖 171
7.2.4 定義首頁的視圖 175
7.2.5 完成Spring套用上下文 177
7.3 處理控制器的輸入 178
7.3.1 編寫處理輸入的控制器 179
7.3.2 渲染視圖 181
7.4 處理表單 183
7.4.1 展現註冊表單 183
7.4.2 處理表單輸入 185
7.4.3 校驗輸入 187
7.5 處理檔案上傳 191
7.5.1 在表單上添加檔案上傳域 191
7.5.2 接收上傳的檔案 192
7.5.3 配置Spring支持檔案上傳 195
7.6 小結 196
第8章 使用Spring Web Flow 197
8.1 安裝Spring Web Flow 198
8.1.1 在Spring中使用Web Flow 198
8.2 流程的組件 201
8.2.1 狀態 201
8.2.2 轉移 204
8.2.3 流程數據 205
8.3 組合起來:披薩流程 207
8.3.1 定義基本流程 207
8.3.2 收集顧客信息 211
8.3.3 構建訂單 216
8.3.4 支付 219
8.4 保護Web流程 211
8.5 小結 221
第9章 保護Spring套用 223
9.1 Spring Security介紹 224
9.1.1 Spring Security起步 224
9.1.2 使用Spring Security配置命名空間 225
9.2 保護Web請求 226
9.2.1 代理Servlet過濾器 226
9.2.2 配置**小化的Web安全性 227
9.2.3 攔截請求 231
9.3 保護視圖級別的元素 234
9.3.1 訪問認證信息的細節 234
9.3.2 根據許可權渲染 235
9.4 認證用戶 237
9.4.1 配置記憶體用戶存儲庫 238
9.4.2 基於資料庫進行認證 239
9.4.3 基於LDAP進行認證 240
9.4.4 啟用remember-me功能 244
9.5 保護方法調用 245
9.5.1 使用@Secured註解保護方法調用 245
9.5.2 使用JSR-250的@RolesAllowed註解 246
9.5.3 使用SpEL實現調用前後的安全性 246
9.5.4 聲明方法級別的安全性切點 250
9.6 小結 251
第三部分 Spring集成
第 10章 使用遠程服務 254
10.1 Spring遠程調用概覽 255
10.2 使用RMI 257
10.2.1 發布一個RMI服務 257
10.2.2 裝配RMI服務 260
10.3 使用Hessian和Burlap發布遠程服務 262
10.3.1 使用Hessian和Burlap發布Bean的功能 263
10.3.2 訪問Hessian/Burlap服務 266
10.4 使用Spring的HttpInvoker 267
10.4.1 將把Bean發布為HTTP服務 267
10.4.2 通過HTTP訪問服務 269
10.5 發布和使用Web服務 270
10.5.1 創建JAX-WS端點 271
10.5.2 在客戶端代理JAX-WS服務 275
10.6 小結 276
第 11章 為Spring添加REST功能 277
11.1 了解REST 278
11.1.1 REST的基本原理 278
11.1.2 Spring是如何支持REST的 279
11.2 編寫面向資源的控制器 279
11.2.1 剖析RESTless的控制器 280
11.2.2 處理RESTful URL 281
11.2.3 執行REST動作 284
11.3 表述資源 287
11.3.1 協商資源表述 287
11.3.2 使用HTTP信息轉換器 290
11.4 編寫REST客戶端 293
11.4.1 了解RestTemplate的操作 295
11.4.2 GET資源 296
11.4.3 PUT資源 298
11.4.4 DELETE資源 300
11.4.5 POST資源數據 301
11.4.6 交換資源 303
11.5 提交RESTful表單 305
11.5.1 在JSP中渲染隱藏的方法域 306
11.5.2 發布真正的請求 307
11.6 小結 308
第 12章 Spring訊息 310
12.1 JMS簡介 311
12.1.1 構建JMS 312
12.1.2 評估JMS的優點 314
12.2 在Spring中搭建訊息代理 316
12.2.1 創建連線工廠 316
12.2.2 聲明ActiveMQ訊息目的地 317
12.3 使用Spring的JMS模板 318
12.3.1 處理失控的JMS代碼 318
12.3.2 使用JMS模板 319
12.4 創建訊息驅動的POJO 324
12.4.1 創建訊息監聽器 325
12.4.2 配置訊息監聽器 326
12.5 使用基於訊息的RPC 327
12.5.1 使用Spring基於訊息的RPC 328
12.5.2 使用Lingo實現異步RPC 330
12.6 小結 332
第 13章 使用JMX管理Spring Bean 333
13.1 將Spring Bean導出為MBean 334
13.1.1 通過名稱發布方法 337
13.1.2 使用接口定義MBean的操作和屬性 339
13.1.3 使用註解驅動的MBean 340
13.1.4 處理MBean衝突 342
13.2 遠程MBean 343
13.2.1 發布遠程MBean 343
13.2.2 訪問遠程MBean 344
13.2.3 代理MBean 346
13.3 處理通知 347
13.3.1 監聽通知 348
13.4 小結 349
第 14章 其他Spring技巧 350
14.1 外部化配置 351
14.1.1 替換屬性占位符 351
14.1.2 重寫屬性 354
14.1.3 加密外部屬性 355
14.2 裝配JNDI對象 357
14.2.1 JNDI的傳統用法 357
14.2.2 裝配JNDI對象 359
14.2.3 將EJB裝配到Spring中 362
14.3 傳送郵件 363
14.3.1 配置郵件傳送器 363
14.3.2 構建郵件 365
14.4 調度和後台任務 370
14.4.1 聲明調度方法 371
14.4.2 聲明異步方法 372
14.5 小結 373
14.6 結束語 374