第1章 Spring框架概述 1
1.1 為什麼要Spring? 1
1.1.1 J2EE傳統方式的問題 1
1.1.2 輕量級框架 3
1.1.3 進入Spring 4
1.2 Spring的價值 5
1.3 上下文中的Spring 6
1.3.1 技術 7
1.3.2 麵嚮方麵的編程 9
1.3.3 一緻性抽象 12
1.3.4 與其他框架的關係 16
1.4 使用Spring構造應用程序 18
1.4.1 關係圖 18
1.4.2 持久性和集成 20
1.4.3 業務服務對象 23
1.4.4 錶示 24
1.5 前景 25
1.5.1 發布日程 25
1.5.2 Java和J2EE的進展 26
1.5.3 技術趨勢 27
1.5.4 標準與源碼公開 27
1.6 Spring項目和社區 28
1.6.1 曆史 28
1.6.2 模塊摘要 29
1.6.3 支持的環境 32
1.7 小結 32
第2章 BEAN工廠與應用程序上下文 34
2.1 控製反轉和依賴注入 34
2.1.1 不同形式的依賴注入 36
2.1.2 在設置器注入和構造函數注入之間決定 37
2.2 容器 38
2.2.1 Bean工廠 39
2.2.2 應用程序上下文 40
2.2.3 啓動容器 41
2.2.4 使用來自工廠的Bean 42
2.2.5 XML Bean配置 43
2.2.6 基本的Bean定義 43
2.2.7 管理Bean生命周期 52
2.2.8 對服務和資源訪問的抽象 54
2.2.9 重用Bean定義 57
2.2.10 使用後置處理器處理定製的Bean和容器 59
2.3 小結 63
第3章 高級容器概念 64
3.1 低層資源的抽象 64
3.1.1 應用程序上下文作為ResourceLoader 64
3.1.2 應用程序上下文作為消息源 66
3.2 應用程序事件 68
3.3 管理容器 69
3.3.1 ApplicationContext構造函數中的資源位置路徑 69
3.3.2 應用程序上下文的聲明性用法 71
3.3.3 將容器定義劃分到多個文件 72
3.3.4 處理組件的策略 73
3.3.5 用於訪問容器的單態 75
3.4 一些方便的工廠BEAN 75
3.4.1 PropertyPathFactoryBean 76
3.4.2 FieldRetrievingFactoryBean 76
3.4.3 MethodInvokingFactoryBean 77
3.5 SPRING提供的屬性編輯器 77
3.6 測試策略 78
3.6.1 單元測試 78
3.6.2 使用Spring容器的測試 80
3.7 XML的替代品 81
3.7.1 來自Properties文件的定義 82
3.7.2 編程化的Bean定義 82
3.7.3 其他格式 83
3.7.4 參考文獻 83
3.8 小結 83
第4章 SPRING與AOP 84
4.1 目標 84
4.2 假設 85
4.3 例子 85
4.4 SPRING的AOP框架 86
4.4.1 攔截器鏈 87
4.4.2 贊成與反對 87
4.4.3 通知 88
4.4.4 切點 92
4.4.5 通知器(Advisor) 96
4.4.6 與Spring IoC容器的集成 97
4.4.7 在運行時間檢驗並處理代理狀態 107
4.4.8 編程化的代理創建 107
4.5 使用SPRING的AOP框架的高級特性 108
4.5.1 TargetSources 108
4.5.2 及早終止攔截器鏈 112
4.5.3 使用介紹 112
4.5.4 暴露當前的代理 114
4.5.5 暴露當前的MethodInvocation 115
4.5.6 理解代理類型 115
4.5.7 調試與測試 117
4.5.8 其他 118
4.6 與其他AOP框架集成 120
4.6.1 目標 120
4.6.2 AspectJ集成 121
4.6.3 AspectWerkz 125
4.7 參考文獻 125
4.8 小結 126
第5章 DAO支持與JDBC框架 127
5.1 數據訪問對象模式 127
5.2 SPRING的JDBC框架概述 128
5.2.1 起因:直接使用JDBC的問題 128
5.2.2 Spring可以如何幫助 130
5.2.3 簡單的例子 130
5.3 建立樣本應用程序的數據訪問層 131
5.3.1 樣本應用程序的數據模型 131
5.3.2 DataSource 132
5.3.3 異常轉譯 133
5.4 使用JDBCTEMPLATE的操作 134
5.4.1 迴調方法的使用 134
5.4.2 JdbcTemplate的方便方法 135
5.4.3 使用JdbcTemplate的基本查詢 136
5.4.4 使用JdbcTemplate的基本更新 137
5.4.5 JdbcTemplate的高級用法 137
5.4.6 對RowSet的支持 138
5.5 使用RDBMS操作類 139
5.5.1 SqlQuery和MappingSqlQuery 139
5.5.2 使用SqlUpdate插入和更新 140
5.5.3 使用UpdatableSqlQuery更新ResultSet 141
5.5.4 生成主鍵 141
5.5.5 檢索數據庫生成的鍵 142
5.5.6 調用存儲過程 143
5.6 高級概念 144
5.6.1 在應用程序服務器中的運行Spring JDBC 144
5.6.2 使用定製的異常轉譯 145
5.6.3 讀寫LOB數據 147
5.6.4 批量更新 149
5.6.5 存儲過程的高級用法 150
5.7 其他的考慮事項 152
5.7.1 性能 152
5.7.2 何時使用JDBC和O/R映射 152
5.7.3 JDBC版本和J2EE版本 153
5.8 小結 153
第6章 事務和資源管理 154
6.1 背景 154
6.1.1 什麼是事務? 154
6.1.2 ACID屬性 154
6.1.3 並發控製 156
6.2 事務與J2EE 156
6.2.1 局部事務 157
6.2.2 全局/分布式事務 157
6.2.3 事務傳播 157
6.2.4 事務劃分 157
6.3 SPRING事務支持的例子 158
6.4 SPRING的事務抽象介紹 159
6.4.1 事務控製選擇的概述 159
6.4.2 事務劃分策略 162
6.4.3 事務管理策略 167
6.5 DATASOURCE聲明 171
6.5.1 本地非緩衝 171
6.5.2 本地緩衝 172
6.5.3 JNDI 172
6.5.4 在本地DataSource和JNDI DataSource之間選擇 173
6.6 小結 173
第7章 對象/關係映射 175
7.1 背景知識 175
7.1.1 基本的O/R映射 176
7.1.2 對象查詢語言 176
7.1.3 透明持久性 177
7.1.4 何時選擇O/R映射 177
7.2 SPRING中的O/R映射支持 178
7.2.1 數據訪問對象 178
7.2.2 事務管理 179
7.3 IBATIS SQL MAPS 179
7.3.1 映射文件 180
7.3.2 DAO實現 181
7.3.3 在Spring上下文中設置 182
7.3.4 事務管理 182
7.3.5 iBATIS概要 183
7.4 HIBERNATE 184
7.4.1 映射文件 184
7.4.2 DAO實現 185
7.4.3 Spring上下文中的設置 186
7.4.4 設置為JCA連接器 187
7.4.5 事務管理 188
7.4.6 Open Session in View 192
7.4.7 BLOB/CLOB處理 194
7.4.8 Hibernate:小結 195
7.5 JDO 196
7.5.1 持久性對象的生命周期 197
7.5.2 DAO實現 197
7.5.3 在Spring上下文中設置 199
7.5.4 事務管理 200
7.5.5 PersistenceManager的生命周期 200
7.5.6 Open PersistenceManager in View 201
7.5.7 JDO方言 203
7.5.8 JDO:小結 203
7.6 其他O/R映射工具 205
7.6.1 Apache OJB 205
7.6.2 TopLink 206
7.6.3 Cayenne 207
7.6.4 JSR-220持久性 207
7.7 小結 207
第8章 輕量級遠程處理 209
8.1 概念和範圍 209
8.2 公共的配置風格 211
8.3 HESSIAN和BURLAP 212
8.3.1 訪問一個服務 213
8.3.2 導齣一個服務 214
8.4 HTTP調用器 215
8.4.1 訪問一個服務 216
8.4.2 導齣一個服務 216
8.4.3 定製化選項 217
8.5 RMI 218
8.5.1 訪問一個服務 219
8.5.2 Stub查詢策略 220
8.5.3 導齣一個服務 221
8.5.4 定製化選項 222
8.5.5 RMI-IIOP 222
8.6 通過JAX-RPC的WEB服務 223
8.6.1 訪問一個服務 224
8.6.2 導齣一個服務 225
8.6.3 定製的類型映射 226
8.7 小結 227
第9章 支持性服務 229
9.1 JMS 229
9.1.1 引言 229
9.1.2 Spring的JMS支持的起因 230
9.1.3 通過模闆的JMS訪問 230
9.1.4 異常處理 232
9.1.5 ConnectionFactory管理 232
9.1.6 消息轉換器 233
9.1.7 目的管理 233
9.1.8 事務管理 234
9.1.9 JmsGatewaySupport 235
9.1.10 前景 236
9.2 使用SPRING的調度 236
9.2.1 Timer與Quartz 236
9.2.2 Timer 237
9.2.3 Quartz 238
9.3 使用SPRING發送電子郵件 241
9.3.1 入門指南 242
9.3.2 重用現有的郵件會話 242
9.3.3 使用COS的郵寄發送 242
9.3.4 通用的郵件管理器 243
9.4 腳本 245
9.4.1 一緻性模型 245
9.4.2 其他腳本語言 248
9.5 小結 248
第10章 SPRING的ACEGI SECURITY係統 249
10.1 企業應用程序的安全選擇 249
10.1.1 典型的需求 249
10.1.2 Acegi Security簡介 250
10.1.3 Java身份驗證和授權服務 252
10.1.4 Servlet規範 254
10.2 ACEGI SECURITY的基礎 255
10.2.1 身份驗證 255
10.2.2 存儲身份驗證對象 257
10.2.3 授權 258
10.2.4 域對象實例的安全 259
10.3 範例代碼 262
10.3.1 範例介紹 262
10.3.2 安全不知道的實現 262
10.3.3 安全方法 263
10.3.4 身份驗證 263
10.3.5 授權 264
10.4 小結 265
第11章 SPRING與EJB 267
11.1 對EJB的需要做齣決斷 267
11.2 訪問EJB 268
11.2.1 樣闆方法 268
11.2.2 Spring的方法 269
11.3 用SPRING實現EJB 273
11.3.1 無狀態會話Bean 273
11.3.2 有狀態會話Bean 275
11.3.3 消息驅動的Bean 276
11.3.4 XDoclet 276
11.4 單態容器訪問,好還是壞? 277
11.4.1 ContextSingletonBeanFactoryLocator和SingletonBeanFactoryLocator 278
11.4.2 共享的上下文作為Web應用程序的應用程序上下文的雙親 280
11.4.3 使用來自EJB的共享的上下文 280
11.5 測試關注點 281
11.5.1 在POJO委托中實現業務功能 281
11.5.2 使用模仿的EJB容器 282
11.5.3 應用程序服務器內部的集成測試 282
11.6 小結 283
第12章 WEB MVC框架 284
12.1 簡單的例子 284
12.2 一般的體係結構 285
12.2.1 Web MVC概念 285
12.2.2 使用分發器和控製器的通用Web MVC 286
12.2.3 好的Web MVC框架的需求 286
12.2.4 Spring的Web MVC的等價物 287
12.3 基礎設施組件 289
12.3.1 DispatcherServlet 289
12.3.2 WebApplicationContext 291
12.4 處理請求有關的工作流 293
12.5 SPRING MVC WEB應用程序的一般布局 294
12.6 HANDLERMAPPING 295
12.6.1 BeanNameUrlHandlerMapping 296
12.6.2 SimpleUrlHandlerMapping 296
12.6.3 CommonsPathMapUrlHandlerMapping 297
12.6.4 多個HandlerMapping 298
12.7 HANDLEREXECUTIONCHAIN和攔截器 298
12.7.1 WebContentInterceptor 299
12.7.2 UserRoleAuthorizationInterceptor 300
12.7.3 Spring MVC提供的其他處理器攔截器 300
12.8 處理器及其適配器 300
12.9 MODELANDVIEW和VIEWRESOLVERS 301
12.9.1 UrlBasedViewResolver 301
12.9.2 BeanNameViewResolver和XmlViewResolver 302
12.9.3 ResourceBundleViewResolver 302
12.9.4 視圖解析器成鏈 303
12.10 地區值的改變和解析 304
12.11 HANDLEREXCEPTIONRESOLVERS 305
12.12 控製器 307
12.12.1 WebContentGenerator 307
12.12.2 AbstractController 308
12.12.3 UrlFilenameViewController 308
12.12.4 ParameterizableViewController 309
12.12.5 MultiActionController 309
12.13 數據綁定 310
12.13.1 使用數據綁定時的方便功能 310
12.14 使用控製器的實際例子 311
12.15 使用ABSTRACTCONTROLLER查看演齣列錶 311
12.15.1 預訂 313
12.16 嚮導功能 318
12.16.1 基本配置 318
12.16.2 模闆方法 318
12.16.3 嚮導流程 319
12.16.4 頁麵改變、編號和其他動作 319
12.17 擴展SPRING處理器的基礎設施 320
12.18 上傳文件 321
12.18.1 配置多部分解析器 321
12.18.2 創建錶單來上傳文件 321
12.18.3 處理上傳的數據 322
12.19 測試控製器 322
12.19.1 無需應用程序上下文的測試 323
12.19.2 使用模仿對象的更廣泛測試 323
12.19.3 使用完全的應用程序上下文測試 323
12.19.4 測試Web應用程序的其他方法 324
12.19.5 小結 324
第13章 WEB視圖技術 326
13.1 一個例子 326
13.1.1 通用配置 327
13.1.2 JSP 327
13.1.3 FreeMarker 327
13.1.4 使用iText生成PDF 328
13.2 選擇技術時的注意事項 328
13.3 視圖對象和模型 329
13.4 ABSTRACTVIEW提供的特性 330
13.4.1 使用RedirectView發布新的請求 330
13.4.2 使用視圖前綴發布轉嚮或者重定嚮 331
13.5 JSP 332
13.5.1 配置應用程序以使用JSP 332
13.5.2 使用定製標記創建錶單 333
13.5.3 使用標記文件創建可重用的元素 337
13.6 VELOCITY和FREEMARKER 338
13.6.1 配置視圖解析器 338
13.6.2 使用錶單簡化宏 340
13.7 TILES 342
13.8 基於XML和XSLT的視圖 344
13.9 EXCEL和基於其他文檔的視圖 345
13.9.1 從錶演列錶生成Excel文件 345
13.9.2 以模闆作為Excel文件的基礎 346
13.9.3 基於其他文檔的視圖 346
13.9.4 使用HandlerInterceptor區分HTML和Excel 346
13.10 實現定製視圖 347
13.10.1 View和AbstractView 347
13.10.2 實現從數據對象生成XML的視圖 348
13.10.3 實現定製視圖時的注意事項 348
13.11 小結 349
第14章 與其他WEB框架集成 350
14.1 選擇MVC框架時的注意事項 350
14.1.1 比較傳統的Web MVC框架 350
14.2 與SPRING集成:核心概念 359
14.3 WEBWORK 集成 361
14.3.1 設置ObjectFactory 361
14.4 STRUTS集成 361
14.4.1 使用ActionSupport 362
14.4.2 使用DelegationRequestProcessor和DelegationActionProxy 362
14.4.3 使用自動裝配的基本動作 364
14.5 TAPESTRY集成 365
14.5.1 為Tapestry準備Bean 365
14.5.2 頁麵類 365
14.5.3 頁麵定義 366
14.5.4 頁麵模闆 366
14.5.5 Tapestry集成的最終思考 366
14.6 JSF集成 367
14.7 小結 368
第15章 樣本應用程序 369
15.1 服務器技術的選擇 369
15.2 應用層 370
15.3 持久性層 370
15.3.1 數據模型 370
15.3.2 域對象模型 371
15.3.3 對象/關係映射 371
15.3.4 DAO實現 373
15.3.5 數據訪問上下文 374
15.4 業務服務層 374
15.4.1 服務 374
15.4.2 應用程序上下文 375
15.5 WEB層 375
15.5.1 應用程序流程 376
15.5.2 通過web.xml配置應用程序 376
15.5.3 Web控製器 377
15.5.4 視圖技術 377
15.6 與J2EE設計和開發實現的比較 378
15.6.1 更簡單的技術 378
15.6.2 數據庫變化 378
15.7 服務器配置 378
15.7.1 MySQL 379
15.7.2 Tomcat 379
15.8 組建和部署 379
15.8.1 創建和載入數據庫錶 380
15.8.2 組建應用程序並部署到Tomcat服務器 380
15.9 小結 380
第16章 結論 381
16.1 SPRING解決的問題 381
16.2 SPRING解決方案 381
16.3 SPRING開發的指導方針 383
16.3.1 技術選擇 383
16.3.2 層與層 385
16.3.3 構造應用程序 389
16.3.4 測試應用程序 392
16.4 相關項目 394
16.4.1 Spring的Acegi Security 394
16.5 其他項目 395
16.6 非J2EE環境中的SPRING 395
16.7 發現更多 396
16.7.1 書籍和文章 396
16.7.2 在綫資源 397
16.7.3 樣本應用程序 397
16.8 前景.. 398
附錄A 樣本應用程序的需求 399
A.1 概述 399
A.2 用戶群體 399
A.2.1 公眾Internet用戶 399
A.2.2 售票處用戶 400
A.2.3 係統管理員 400
A.3 假設 400
A.4 範圍限製 401
A.5 交付時間錶 401
A.6 INTERNET用戶界麵 401
A.6.1 基本工作流 402
A.6.2 錯誤處理 402
A.6.3 應用程序屏幕 402
A.7 非功能性需求 409
A.8 硬件和軟件環境 410
· · · · · · (
收起)