Spring 3.x 企業應用開發實戰
Spring 3.x 企業應用開發實戰
編輯推薦
10年技術專家邀您共享Spring饕餮盛宴
基本資訊
- 作者:
- 出版社:電子工業出版社
- ISBN:9787121152139
- 上架時間:2012-1-5
- 出版日期:2012 年2月
內容簡介
spring 3.0是spring在積蓄了3年之久後,隆重推出的一個重大升級版本,進一步加強了spring作為java領域第一開源平臺的翹楚地位。
spring 3.0引入了眾多java開發者翹首以盼的新功能和新特性,如oxm、校驗及格式化框架、rest風格的web程式設計模型等。這些新功能實用性強、易用性高,可大幅降低java應用,特別是java web應用開發的難度,同時有效提升應用開發的優雅性。
《spring 3.x 企業應用開發實戰(含cd光碟1張)》是在《精通spring 2.x——企業應用開發詳解》的基礎上,經過歷時一年的重大調整改版而成的,本書延續了上一版本追求深度,注重原理,不停留在技術表面的寫作風格,力求使讀者在熟練使用spring的各項功能的同時,還能透徹理解spring的內部實現,真正做到知其然知其所以然。此外,本書重點突出了“實戰性”的主題,力求使全書“從實際專案中來,到實際專案中去”。
spring 3.0引入了眾多java開發者翹首以盼的新功能和新特性,如oxm、校驗及格式化框架、rest風格的web程式設計模型等。這些新功能實用性強、易用性高,可大幅降低java應用,特別是java web應用開發的難度,同時有效提升應用開發的優雅性。
《spring 3.x 企業應用開發實戰(含cd光碟1張)》是在《精通spring 2.x——企業應用開發詳解》的基礎上,經過歷時一年的重大調整改版而成的,本書延續了上一版本追求深度,注重原理,不停留在技術表面的寫作風格,力求使讀者在熟練使用spring的各項功能的同時,還能透徹理解spring的內部實現,真正做到知其然知其所以然。此外,本書重點突出了“實戰性”的主題,力求使全書“從實際專案中來,到實際專案中去”。
目錄
《spring 3.x 企業應用開發實戰(含cd光碟1張)》
第1篇 概述
第1章 spring概述 2
1.1 認識spring 3
1.2 關於springsource 4
1.3 spring帶給我們什麼 5
1.4 spring體系結構 6
1.5 spring 3.0的新功能 8
1.5.1 核心api更新到java 5.0 8
1.5.2 spring表示式語言 8
1.5.3 可透過java類提供ioc配置資訊 9
1.5.4 通用型別轉換系統和屬性格式化
系統 10
1.5.5 資料訪問層新增oxm功能 10
1.5.6 web層的增強 10
1.5.7 其他 11
1.6 spring對java版本的要求 11
1.7 如何獲取spring 11
1.8 小結 12
第2章 快速入門 13
第1篇 概述
第1章 spring概述 2
1.1 認識spring 3
1.2 關於springsource 4
1.3 spring帶給我們什麼 5
1.4 spring體系結構 6
1.5 spring 3.0的新功能 8
1.5.1 核心api更新到java 5.0 8
1.5.2 spring表示式語言 8
1.5.3 可透過java類提供ioc配置資訊 9
1.5.4 通用型別轉換系統和屬性格式化
系統 10
1.5.5 資料訪問層新增oxm功能 10
1.5.6 web層的增強 10
1.5.7 其他 11
1.6 spring對java版本的要求 11
1.7 如何獲取spring 11
1.8 小結 12
第2章 快速入門 13
.2.1 例項功能概述 14
2.1.1 比hello world更適用的例項 14
2.1.2 例項功能簡介 14
2.2 環境準備 16
2.2.1 建立庫表 16
2.2.2 建立工程 17
2.2.3 類包及spring配置檔案規劃 19
2.3 持久層 20
2.3.1 建立領域物件 20
2.3.2 userdao 21
2.3.3 loginlogdao 24
2.3.4 在spring中裝配dao 24
2.4 業務層 26
2.4.1 userservice 26
2.4.2 在spring中裝配service 27
2.4.3 單元測試 29
2.5 展現層 31
2.5.1 配置spring mvc框架 31
2.5.2 處理登入請求 33
2.5.3 jsp檢視頁面 35
2.6 執行web應用 37
2.7 小結 38
第2篇 ioc和aop
第3章 ioc容器概述 40
3.1 ioc概述 41
3.1.1 透過例項理解ioc的概念 41
3.1.2 ioc的型別 43
3.1.3 透過容器完成依賴關係的注入 45
3.2 相關java基礎知識 46
3.2.1 簡單例項 46
3.2.2 類裝載器classloader 48
3.2.3 java反射機制 51
3.3 資源訪問利器 53
3.3.1 資源抽象介面 53
3.3.2 資源載入 56
3.4 beanfactory和applicationcontext 58
3.4.1 beanfactory介紹 58
3.4.2 applicationcontext介紹 61
3.4.3 父子容器 68
3.5 bean的生命週期 68
3.5.1 beanfactory中bean的生命週期 68
3.5.2 applicationcontext中bean的
生命週期 77
3.6 小結 79
第4章 在ioc容器中裝配bean 80
4.1 spring配置概述 81
4.1.1 spring容器高層檢視 81
4.1.2 基於xml的配置 82
4.2 bean基本配置 84
4.2.1 裝配一個bean 84
4.2.2 bean的命名 85
4.3 依賴注入 86
4.3.1 屬性注入 86
4.3.2 建構函式注入 89
4.3.3 工廠方法注入 93
4.3.4 選擇注入方式的考量 94
4.4 注入引數詳解 95
4.4.1 字面值 95
4.4.2 引用其他bean 96
4.4.3 內部bean 98
4.4.4 null值 98
4.4.5 級聯屬性 98
4.4.6 集合型別屬性 99
4.4.7 簡化配置方式 103
4.4.8 自動裝配 106
4.5 方法注入 107
4.5.1 lookup方法注入 107
4.5.2 方法替換 108
4.6 [bean]之間的關係 109
4.6.1 繼承 109
4.6.2 依賴 110
4.6.3 引用 111
4.7 整合多個配置檔案 112
4.8 bean作用域 113
4.8.1 singleton作用域 113
4.8.2 prototype作用域 114
4.8.3 web應用環境相關的bean
作用域 115
4.8.4 作用域依賴問題 117
4.9 factorybean 118
4.10 基於註解的配置 120
4.10.1 使用註解定義bean 120
4.10.2 使用註解配置資訊啟動spring
容器 120
4.10.3 自動裝配bean 122
4.10.4 bean作用範圍及生命過程方法 125
4.11 基於java類的配置 127
4.11.1 使用java類提供bean定義
資訊 127
4.11.2 使用基於java類的配置資訊
啟動spring容器 130
4.12 不同配置方式比較 132
4.13 小結 134
第5章 spring容器高階主題 135
5.1 spring容器技術內幕 136
5.1.1 內部工作機制 136
5.1.2 beandefinition 139
5.1.3 instantiationstrategy 140
5.1.4 beanwrapper 140
5.2 屬性編輯器 141
5.2.1 javabean的編輯器 142
5.2.2 spring預設屬性編輯器 145
5.2.3 自定義屬性編輯器 146
5.3 使用外部屬性檔案 149
5.3.1 使用外部屬性檔案 149
5.3.2 使用加密的屬性檔案 151
5.3.3 屬性檔案自身的引用 155
5.4 引用bean的屬性值 156
5.5 國際化資訊 158
5.5.1 基礎知識 158
5.5.2 messagesource 163
5.5.3 容器級的國際化資訊資源 166
5.6 容器事件 167
5.6.1 spring事件類結構 168
5.6.2 解構spring事件體系的具體
實現 169
5.6.3 一個例項 170
5.7 小結 172
第6章 spring aop基礎 173
6.1 aop概述 174
6.1.1 aop到底是什麼 174
6.1.2 aop術語 176
6.1.3 aop的實現者 178
6.2 基礎知識 178
6.2.1 帶有橫切邏輯的例項 178
6.2.2 jdk動態代理 181
6.2.3 cglib動態代理 184
6.2.4 aop聯盟 186
6.2.5 代理知識小結 186
6.3 建立增強類 187
6.3.1 增強型別 187
6.3.2 前置增強 188
6.3.3 後置增強 192
6.3.4 環繞增強 193
6.3.5 異常丟擲增強 194
6.3.6 引介增強 196
6.4 建立切面 199
6.4.1 切點型別 200
6.4.2 切面型別 201
6.4.3 靜態普通方法名匹配切面 203
6.4.4 靜態正規表示式方法匹配切面 205
6.4.5 動態切面 208
6.4.6 流程切面 211
6.4.7 複合切點切面 213
6.4.8 引介切面 215
6.5 自動建立代理 216
6.5.1 實現類介紹 217
6.5.2 beannameautoproxycreator 217
6.5.3 defaultadvisorautoproxycreator 219
6.6 小結 220
第7章 基於@aspectj和schema的aop 221
7.1 spring對aop的支援 222
7.2 jdk 5.0註解知識快速進階 222
7.2.1 瞭解註解 222
7.2.2 一個簡單的註解類 223
7.2.3 使用註解 224
7.2.4 訪問註解 225
7.3 著手使用@aspectj 226
7.3.1 使用前的準備 226
7.3.2 一個簡單的例子 227
7.3.3 如何透過配置使用@aspectj
切面 229
7.4 @aspectj語法基礎 230
7.4.1 切點表示式函式 230
7.4.2 在函式入參中使用萬用字元 231
7.4.3 邏輯運算子 232
7.4.4 不同增強型別 232
7.4.5 引介增強用法 233
7.5 切點函式詳解 235
7.5.1 @annotation() 235
7.5.2 execution() 237
7.5.3 args()和@args() 238
7.5.4 within() 240
7.5.5 @within()和@target() 240
7.5.6 target()的this() 241
7.6 @aspectj進階 243
7.6.1 切點複合運算 243
7.6.2 命名切點 244
7.6.3 增強織入的順序 245
7.6.4 訪問連線點資訊 246
7.6.5 繫結連線點方法入參 247
7.6.6 繫結代理物件 249
7.6.7 繫結類註解物件 249
7.6.8 繫結返回值 250
7.6.9 繫結丟擲的異常 251
7.7 基於schema配置切面 252
7.7.1 一個簡單切面的配置 252
7.7.2 配置命名切點 253
7.7.3 各種增強型別的配置 255
7.7.4 繫結連線點資訊 257
7.7.5 advisor配置 258
7.8 混合切面型別 259
7.8.1 混合使用各種切面型別 260
7.8.2 各種切面型別總結 261
7.9 jvm class檔案位元組碼轉換基礎
知識 261
7.9.1 java.lang.instrument包的工作
原理 262
7.9.2 如何向jvm中註冊轉換器 263
7.9.3 使用jvm啟動引數註冊
轉換器的問題 265
7.10 使用ltw織入切面 265
7.10.1 spring的loadtimeweaver 266
7.10.2 使用ltw織入一個切面 268
7.10.3 在tomcat下的配置 270
7.10.4 在其他web應用伺服器下的
配置 271
7.11 小結 271
第3篇 資料訪問
第8章 spring對dao的支援 274
8.1 spring的dao理念 275
8.2 統一的異常體系 275
8.2.1 spring的dao異常體系 276
8.2.2 jdbc的異常轉換器 278
8.2.3 其他持久技術的異常轉換器 278
8.3 統一資料訪問模板 279
8.3.1 使用模板和回撥機制 279
8.3.2 spring為不同持久化技術所
提供的模板類 281
8.4 資料來源 282
8.4.1 配置一個資料來源 282
8.4.2 獲取jndi資料來源 287
8.4.3 spring的資料來源實現類 287
8.5 小結 288
第9章 spring的事務管理 289
9.1 資料庫事務基礎知識 290
9.1.1 何為資料庫事務 290
9.1.2 資料併發的問題 291
9.1.3 資料庫鎖機制 293
9.1.4 事務隔離級別 294
9.1.5 jdbc對事務支援 294
9.2 threadlocal基礎知識 296
9.2.1 threadlocal是什麼 296
9.2.2 threadlocal的介面方法 297
9.2.3 一個theadlocal例項 298
9.2.4 與thread同步機制的比較 299
9.2.5 spring使用threadlocal解決
執行緒安全問題 300
9.3 spring對事務管理的支援 301
9.3.1 事務管理關鍵抽象 302
9.3.2 spring的事務管理器實現類 305
9.3.3 事務同步管理器 307
9.3.4 事務傳播行為 309
9.4 程式設計式的事務管理 309
9.5 使用xml配置宣告式事務 310
9.5.1 一個將被實施事務增強的
服務介面 312
9.5.2 使用原始的
transactionproxyfactorybean 313
9.5.3 基於tx/aop名稱空間的配置 315
9.6 使用註解配置宣告式事務 318
9.6.1 使用@transactional註解 318
9.6.2 透過aspectj ltw引入事務
切面 322
9.7 整合特定的應用伺服器 323
9.7.1 bea weblogic 324
9.7.2 bea weblogic 324
9.8 小結 324
第10章 spring的事務管理難點剖析 325
10.1 dao和事務管理的牽絆 326
10.1.1 jdbc訪問資料庫 326
10.1.2 hibernate訪問資料庫 328
10.2 應用分層的迷惑 330
10.3 事務方法巢狀呼叫的迷茫 334
10.3.1 spring事務傳播機制回顧 334
10.3.2 相互巢狀的服務方法 335
10.4 多執行緒的困惑 338
10.4.1 spring透過單例項化bean
簡化多執行緒問題 338
10.4.2 啟動獨立執行緒呼叫事務方法 338
10.5 聯合軍種作戰的混亂 340
10.5.1 spring事務管理器的應對 340
10.5.2 hibernate+spring jdbc
混合框架的事務管理 341
10.6 特殊方法成漏網之魚 345
10.6.1 哪些方法不能實施spring aop
事務 345
10.6.2 事務增強遺漏例項 345
10.7 資料連線洩漏 349
10.7.1 底層連線資源的訪問問題 349
10.7.2 spring jdbc資料連線洩漏 350
10.7.3 透過datasourceutils獲取
資料連線 353
10.7.4 透過datasourceutils獲取
資料連線 355
10.7.5 jdbctemplate如何做到對連線
洩漏的免疫 357
10.7.6 使用transactionawaredata
sourceproxy 357
10.7.7 其他資料訪問技術的等價類 358
10.8 小結 359
第11章 使用spring jdbc訪問資料庫 361
11.1 使用spring jdbc 362
11.1.1 jdbctemplate小試牛刀 362
11.1.2 在dao中使用jdbctemplate 363
11.2 基本的資料操作 364
11.2.1 更改資料 364
11.2.2 返回資料庫的表自增主鍵值 367
11.2.3 批次更改資料 369
11.2.4 查詢資料 370
11.2.5 查詢單值資料 373
11.2.6 呼叫儲存過程 375
11.3 blob/clob型別資料的操作 377
11.3.1 如何獲取本地資料連線 377
11.3.2 相關的操作介面 379
11.3.3 插入lob型別的資料 380
11.3.4 以塊資料方式讀取lob資料 383
11.3.5 以流資料方式讀取lob資料 383
11.4 自增鍵和行集 384
11.4.1 自增鍵的使用 384
11.4.2 如何規劃主鍵方案 386
11.4.3 以行集返回資料 388
11.5 其他型別的jdbctemplate 389
11.5.1 namedparameterjdbctemplate 389
11.5.2 simplejdbctemplate 391
11.6 以oo方式訪問資料庫 391
11.6.1 使用mappingsqlquery查詢
資料 391
11.6.2 使用sqlupdate更新資料 393
11.6.3 使用storedprocedure執行儲存
過程 394
11.6.4 sqlfunction類 396
11.7 小結 396
第12章 整合其他orm框架 398
12.1 spring整合orm技術 399
12.2 在spring中使用hibernate 400
12.2.1 配置sessionfactory 400
12.2.2 使用hibernatetemplate 403
12.2.3 處理lob型別資料 407
12.2.4 新增hibernate事件監聽器 409
12.2.5 使用原生hibernate api 409
12.2.6 使用註解配置 410
12.2.7 事務處理 412
12.2.8 延遲載入的問題 413
12.3 在spring中使用mybatis 414
12.3.1 配置sqlmapclient 415
12.3.2 在spring配置mybatis 416
12.3.3 編寫mybatis的dao 417
12.5 dao層設計 420
12.5.1 dao基類的設計 421
12.5.2 查詢介面方法的設計 423
12.5.3 分頁查詢介面設計 424
12.6 小結 425
第4篇 業務層及web層技術
第13章 任務排程和非同步執行器 428
13.1 任務排程概述 429
13.2 quartz快速進階 429
13.2.1 quartz基礎結構 430
13.2.2 使用simpletrigger 432
13.2.3 使用crontrigger 434
13.2.4 使用calendar 437
13.2.5 任務排程資訊儲存 439
13.3 在spring中使用quartz 442
13.3.1 建立jobdetail 442
13.3.2 建立trigger 444
13.3.3 建立scheduler 446
13.4 spring中使用jdk timer 447
13.4.1 timer和timertask 448
13.4.2 spring對jdk timer的支援 450
13.5 spring對jdk 5.0 executor的
支援 451
13.5.1 瞭解jdk 5.0的executor 452
13.5.2 spring對executor所提供的
抽象 454
13.6 實際應用中的任務排程 455
13.6.1 如何產生任務 456
13.6.2 任務排程對應用程式叢集的
影響 457
13.6.3 任務排程雲 458
13.6.4 web應用程式中排程器的
啟動和關閉問題 460
13.7 小結 462
第14章 使用oxm進行物件xml對映 463
14.1 認識xml解析技術 464
14.1.1 什麼是xml 464
14.1.2 xml的處理技術 464
14.2 xml處理利器:xstream 466
14.2.1 xstream概述 466
14.2.2 快速入門 466
14.2.3 使用xstream別名 469
14.2.4 xstream轉換器 470
14.2.5 xstream註解 472
14.2.6 流化物件 474
14.2.7 持久化api 475
14.2.8 額外功能:處理json 476
14.3 其他常見o/x mapping開源專案 478
14.3.1 jaxb 478
14.3.2 xmlbeans 482
14.3.3 castor 485
14.3.4 jibx 490
14.3.5 總結比較 493
14.4 與spring oxm整合 494
14.4.1 spring oxm概述 494
14.4.2 整合oxm實現者 496
14.4.3 如何在spring中進行配置 497
14.4.4 spring oxm 簡單例項 499
14.5 小結 501
第15章 spring mvc 503
15.1 spring mvc概述 504
15.1.1 體系結構 504
15.1.2 配置dispatcherservlet 505
15.1.3 一個簡單的例項 510
15.2 註解驅動的控制器 514
15.2.1 使用@requestmapping對映
請求 514
15.2.2 請求處理方法簽名概述 518
15.2.3 處理方法簽名詳細說明 519
15.2.4 使用httpmessageconverter[t] 523
15.2.5 處理模型資料 532
15.3 處理方法的資料繫結 538
15.3.1 資料繫結流程剖析 539
15.3.2 資料轉換 539
15.3.3 資料格式化 545
15.3.4 資料校驗 549
15.4 檢視和檢視解析器 558
15.4.1 認識檢視 558
15.4.2 認識檢視解析器 560
15.4.3 jsp和jstl 561
15.4.4 模板檢視 565
15.4.5 excel 569
15.4.6 pdf 570
15.4.7 輸出xml 572
15.4.8 輸出json 573
15.4.9 使用xmlviewresolver 573
15.4.10 使用resourcebundle
viewresolver 574
15.4.11 混合使用多種檢視技術 575
15.5 本地化解析 577
15.5.1 本地化概述 577
15.5.2 使用cookielocaleresolver 578
15.5.3 使用sessionlocaleresolver 579
15.5.4 使用localechangeinterceptor 579
15.6 檔案上傳 579
15.6.1 配置multipartresolver 580
15.6.2 編寫控制器和檔案上傳表單頁面 580
15.7 雜項 581
15.7.1 靜態資源處理 581
15.7.2 裝配攔截器 586
15.7.3 異常處理 587
15.8 小結 589
第5篇 測試及實戰
第16章 實戰型單元測試 592
16.1 單元測試概述 593
16.1.1 為什麼需要單元測試 593
16.1.2 單元測試之誤解 594
16.1.3 單元測試之困境 595
16.1.4 單元測試基本概念 596
16.2 junit 4快速進階 600
16.2.1 junit 4概述 600
16.2.2 junit 4生命週期 601
16.2.3 使用junit 4 601
16.3 模擬利器mockito 608
16.3.1 模擬測試概述 608
16.3.2 建立mock物件 608
16.3.3 設定mock物件的期望行為及
返回值 609
16.3.4 驗證互動行為 611
16.4 測試整合之王unitils 612
16.4.1 unitils概述 612
16.4.2 整合spring 615
16.4.3 整合hibernate 618
16.4.4 整合dbunit 619
16.4.5 自定義擴充套件模組 620
16.5 使用unitils測試dao層 620
16.5.1 資料庫測試的難點 621
16.5.2 擴充套件dbunit用excel準備資料 621
16.5.3 測試實戰 624
16.6 使用unitils測試service層 634
16.7 測試web層 639
16.7.1 對logincontroller進行單元
測試 640
16.7.2 使用spring servlet api模擬
物件 641
16.7.3 使用spring resttemplate測試 642
16.7.4 使用selenium測試 644
16.8 小結 647
第17章 實戰案例開發 648
17.1 論壇案例概述 649
17.1.1 論壇整體功能結構 649
17.1.2 論壇用例描述 649
17.1.3 主要功能流程描述 651
17.2 系統設計 655
17.2.1 技術框架選擇 655
17.2.2 web目錄結構及類包結構規劃 656
17.2.3 單元測試類包結構規劃 657
17.2.4 系統的結構圖 657
17.2.5 po的類設計 658
17.2.6 持久層設計 659
17.2.7 服務層設計 659
17.2.8 web層設計 660
17.2.9 資料庫設計 661
17.3 開發前的準備 663
17.4 持久層開發 664
17.4.1 po類 664
17.4.2 dao基類 666
17.4.3 透過擴充套件基類所定義dao類 671
17.4.4 dao bean的裝配 672
17.4.5 使用hibernate二級快取 674
17.5 對持久層進行測試 676
17.5.1 配置unitils測試環境 676
17.5.2 準備測試資料庫及測試資料 677
17.5.3 編寫dao測試基類 678
17.5.4 編寫boarddao測試用例 678
17.6 服務層開發 680
17.6.1 userservice的開發 680
17.6.2 forumservice的開發 682
17.6.3 服務類bean的裝配 685
17.7 對服務層進行測試 686
17.7.1 編寫service測試基類 687
17.7.2 編寫forumservice測試用例 687
17.8 web層開發 689
17.8.1 basecontroller的基類 689
17.8.2 使用者登入和登出 691
17.8.3 使用者註冊 692
17.8.4 論壇管理 694
17.8.5 論壇普通功能 696
17.8.6 分頁顯示論壇版塊的主題帖子 698
17.8.7 web.xml配置 702
17.8.8 spring mvc配置 704
17.9 對web層進行測試 705
17.9.1 編寫web測試基類 705
17.9.2 編寫forummanagecontroller
測試用例 706
17.10 部署和執行應用 707
17.11 小結 710
以下內容詳見本書配書光碟:
附錄a javamail傳送郵件 711
附錄b 在spring中開發web service 738
2.1.1 比hello world更適用的例項 14
2.1.2 例項功能簡介 14
2.2 環境準備 16
2.2.1 建立庫表 16
2.2.2 建立工程 17
2.2.3 類包及spring配置檔案規劃 19
2.3 持久層 20
2.3.1 建立領域物件 20
2.3.2 userdao 21
2.3.3 loginlogdao 24
2.3.4 在spring中裝配dao 24
2.4 業務層 26
2.4.1 userservice 26
2.4.2 在spring中裝配service 27
2.4.3 單元測試 29
2.5 展現層 31
2.5.1 配置spring mvc框架 31
2.5.2 處理登入請求 33
2.5.3 jsp檢視頁面 35
2.6 執行web應用 37
2.7 小結 38
第2篇 ioc和aop
第3章 ioc容器概述 40
3.1 ioc概述 41
3.1.1 透過例項理解ioc的概念 41
3.1.2 ioc的型別 43
3.1.3 透過容器完成依賴關係的注入 45
3.2 相關java基礎知識 46
3.2.1 簡單例項 46
3.2.2 類裝載器classloader 48
3.2.3 java反射機制 51
3.3 資源訪問利器 53
3.3.1 資源抽象介面 53
3.3.2 資源載入 56
3.4 beanfactory和applicationcontext 58
3.4.1 beanfactory介紹 58
3.4.2 applicationcontext介紹 61
3.4.3 父子容器 68
3.5 bean的生命週期 68
3.5.1 beanfactory中bean的生命週期 68
3.5.2 applicationcontext中bean的
生命週期 77
3.6 小結 79
第4章 在ioc容器中裝配bean 80
4.1 spring配置概述 81
4.1.1 spring容器高層檢視 81
4.1.2 基於xml的配置 82
4.2 bean基本配置 84
4.2.1 裝配一個bean 84
4.2.2 bean的命名 85
4.3 依賴注入 86
4.3.1 屬性注入 86
4.3.2 建構函式注入 89
4.3.3 工廠方法注入 93
4.3.4 選擇注入方式的考量 94
4.4 注入引數詳解 95
4.4.1 字面值 95
4.4.2 引用其他bean 96
4.4.3 內部bean 98
4.4.4 null值 98
4.4.5 級聯屬性 98
4.4.6 集合型別屬性 99
4.4.7 簡化配置方式 103
4.4.8 自動裝配 106
4.5 方法注入 107
4.5.1 lookup方法注入 107
4.5.2 方法替換 108
4.6 [bean]之間的關係 109
4.6.1 繼承 109
4.6.2 依賴 110
4.6.3 引用 111
4.7 整合多個配置檔案 112
4.8 bean作用域 113
4.8.1 singleton作用域 113
4.8.2 prototype作用域 114
4.8.3 web應用環境相關的bean
作用域 115
4.8.4 作用域依賴問題 117
4.9 factorybean 118
4.10 基於註解的配置 120
4.10.1 使用註解定義bean 120
4.10.2 使用註解配置資訊啟動spring
容器 120
4.10.3 自動裝配bean 122
4.10.4 bean作用範圍及生命過程方法 125
4.11 基於java類的配置 127
4.11.1 使用java類提供bean定義
資訊 127
4.11.2 使用基於java類的配置資訊
啟動spring容器 130
4.12 不同配置方式比較 132
4.13 小結 134
第5章 spring容器高階主題 135
5.1 spring容器技術內幕 136
5.1.1 內部工作機制 136
5.1.2 beandefinition 139
5.1.3 instantiationstrategy 140
5.1.4 beanwrapper 140
5.2 屬性編輯器 141
5.2.1 javabean的編輯器 142
5.2.2 spring預設屬性編輯器 145
5.2.3 自定義屬性編輯器 146
5.3 使用外部屬性檔案 149
5.3.1 使用外部屬性檔案 149
5.3.2 使用加密的屬性檔案 151
5.3.3 屬性檔案自身的引用 155
5.4 引用bean的屬性值 156
5.5 國際化資訊 158
5.5.1 基礎知識 158
5.5.2 messagesource 163
5.5.3 容器級的國際化資訊資源 166
5.6 容器事件 167
5.6.1 spring事件類結構 168
5.6.2 解構spring事件體系的具體
實現 169
5.6.3 一個例項 170
5.7 小結 172
第6章 spring aop基礎 173
6.1 aop概述 174
6.1.1 aop到底是什麼 174
6.1.2 aop術語 176
6.1.3 aop的實現者 178
6.2 基礎知識 178
6.2.1 帶有橫切邏輯的例項 178
6.2.2 jdk動態代理 181
6.2.3 cglib動態代理 184
6.2.4 aop聯盟 186
6.2.5 代理知識小結 186
6.3 建立增強類 187
6.3.1 增強型別 187
6.3.2 前置增強 188
6.3.3 後置增強 192
6.3.4 環繞增強 193
6.3.5 異常丟擲增強 194
6.3.6 引介增強 196
6.4 建立切面 199
6.4.1 切點型別 200
6.4.2 切面型別 201
6.4.3 靜態普通方法名匹配切面 203
6.4.4 靜態正規表示式方法匹配切面 205
6.4.5 動態切面 208
6.4.6 流程切面 211
6.4.7 複合切點切面 213
6.4.8 引介切面 215
6.5 自動建立代理 216
6.5.1 實現類介紹 217
6.5.2 beannameautoproxycreator 217
6.5.3 defaultadvisorautoproxycreator 219
6.6 小結 220
第7章 基於@aspectj和schema的aop 221
7.1 spring對aop的支援 222
7.2 jdk 5.0註解知識快速進階 222
7.2.1 瞭解註解 222
7.2.2 一個簡單的註解類 223
7.2.3 使用註解 224
7.2.4 訪問註解 225
7.3 著手使用@aspectj 226
7.3.1 使用前的準備 226
7.3.2 一個簡單的例子 227
7.3.3 如何透過配置使用@aspectj
切面 229
7.4 @aspectj語法基礎 230
7.4.1 切點表示式函式 230
7.4.2 在函式入參中使用萬用字元 231
7.4.3 邏輯運算子 232
7.4.4 不同增強型別 232
7.4.5 引介增強用法 233
7.5 切點函式詳解 235
7.5.1 @annotation() 235
7.5.2 execution() 237
7.5.3 args()和@args() 238
7.5.4 within() 240
7.5.5 @within()和@target() 240
7.5.6 target()的this() 241
7.6 @aspectj進階 243
7.6.1 切點複合運算 243
7.6.2 命名切點 244
7.6.3 增強織入的順序 245
7.6.4 訪問連線點資訊 246
7.6.5 繫結連線點方法入參 247
7.6.6 繫結代理物件 249
7.6.7 繫結類註解物件 249
7.6.8 繫結返回值 250
7.6.9 繫結丟擲的異常 251
7.7 基於schema配置切面 252
7.7.1 一個簡單切面的配置 252
7.7.2 配置命名切點 253
7.7.3 各種增強型別的配置 255
7.7.4 繫結連線點資訊 257
7.7.5 advisor配置 258
7.8 混合切面型別 259
7.8.1 混合使用各種切面型別 260
7.8.2 各種切面型別總結 261
7.9 jvm class檔案位元組碼轉換基礎
知識 261
7.9.1 java.lang.instrument包的工作
原理 262
7.9.2 如何向jvm中註冊轉換器 263
7.9.3 使用jvm啟動引數註冊
轉換器的問題 265
7.10 使用ltw織入切面 265
7.10.1 spring的loadtimeweaver 266
7.10.2 使用ltw織入一個切面 268
7.10.3 在tomcat下的配置 270
7.10.4 在其他web應用伺服器下的
配置 271
7.11 小結 271
第3篇 資料訪問
第8章 spring對dao的支援 274
8.1 spring的dao理念 275
8.2 統一的異常體系 275
8.2.1 spring的dao異常體系 276
8.2.2 jdbc的異常轉換器 278
8.2.3 其他持久技術的異常轉換器 278
8.3 統一資料訪問模板 279
8.3.1 使用模板和回撥機制 279
8.3.2 spring為不同持久化技術所
提供的模板類 281
8.4 資料來源 282
8.4.1 配置一個資料來源 282
8.4.2 獲取jndi資料來源 287
8.4.3 spring的資料來源實現類 287
8.5 小結 288
第9章 spring的事務管理 289
9.1 資料庫事務基礎知識 290
9.1.1 何為資料庫事務 290
9.1.2 資料併發的問題 291
9.1.3 資料庫鎖機制 293
9.1.4 事務隔離級別 294
9.1.5 jdbc對事務支援 294
9.2 threadlocal基礎知識 296
9.2.1 threadlocal是什麼 296
9.2.2 threadlocal的介面方法 297
9.2.3 一個theadlocal例項 298
9.2.4 與thread同步機制的比較 299
9.2.5 spring使用threadlocal解決
執行緒安全問題 300
9.3 spring對事務管理的支援 301
9.3.1 事務管理關鍵抽象 302
9.3.2 spring的事務管理器實現類 305
9.3.3 事務同步管理器 307
9.3.4 事務傳播行為 309
9.4 程式設計式的事務管理 309
9.5 使用xml配置宣告式事務 310
9.5.1 一個將被實施事務增強的
服務介面 312
9.5.2 使用原始的
transactionproxyfactorybean 313
9.5.3 基於tx/aop名稱空間的配置 315
9.6 使用註解配置宣告式事務 318
9.6.1 使用@transactional註解 318
9.6.2 透過aspectj ltw引入事務
切面 322
9.7 整合特定的應用伺服器 323
9.7.1 bea weblogic 324
9.7.2 bea weblogic 324
9.8 小結 324
第10章 spring的事務管理難點剖析 325
10.1 dao和事務管理的牽絆 326
10.1.1 jdbc訪問資料庫 326
10.1.2 hibernate訪問資料庫 328
10.2 應用分層的迷惑 330
10.3 事務方法巢狀呼叫的迷茫 334
10.3.1 spring事務傳播機制回顧 334
10.3.2 相互巢狀的服務方法 335
10.4 多執行緒的困惑 338
10.4.1 spring透過單例項化bean
簡化多執行緒問題 338
10.4.2 啟動獨立執行緒呼叫事務方法 338
10.5 聯合軍種作戰的混亂 340
10.5.1 spring事務管理器的應對 340
10.5.2 hibernate+spring jdbc
混合框架的事務管理 341
10.6 特殊方法成漏網之魚 345
10.6.1 哪些方法不能實施spring aop
事務 345
10.6.2 事務增強遺漏例項 345
10.7 資料連線洩漏 349
10.7.1 底層連線資源的訪問問題 349
10.7.2 spring jdbc資料連線洩漏 350
10.7.3 透過datasourceutils獲取
資料連線 353
10.7.4 透過datasourceutils獲取
資料連線 355
10.7.5 jdbctemplate如何做到對連線
洩漏的免疫 357
10.7.6 使用transactionawaredata
sourceproxy 357
10.7.7 其他資料訪問技術的等價類 358
10.8 小結 359
第11章 使用spring jdbc訪問資料庫 361
11.1 使用spring jdbc 362
11.1.1 jdbctemplate小試牛刀 362
11.1.2 在dao中使用jdbctemplate 363
11.2 基本的資料操作 364
11.2.1 更改資料 364
11.2.2 返回資料庫的表自增主鍵值 367
11.2.3 批次更改資料 369
11.2.4 查詢資料 370
11.2.5 查詢單值資料 373
11.2.6 呼叫儲存過程 375
11.3 blob/clob型別資料的操作 377
11.3.1 如何獲取本地資料連線 377
11.3.2 相關的操作介面 379
11.3.3 插入lob型別的資料 380
11.3.4 以塊資料方式讀取lob資料 383
11.3.5 以流資料方式讀取lob資料 383
11.4 自增鍵和行集 384
11.4.1 自增鍵的使用 384
11.4.2 如何規劃主鍵方案 386
11.4.3 以行集返回資料 388
11.5 其他型別的jdbctemplate 389
11.5.1 namedparameterjdbctemplate 389
11.5.2 simplejdbctemplate 391
11.6 以oo方式訪問資料庫 391
11.6.1 使用mappingsqlquery查詢
資料 391
11.6.2 使用sqlupdate更新資料 393
11.6.3 使用storedprocedure執行儲存
過程 394
11.6.4 sqlfunction類 396
11.7 小結 396
第12章 整合其他orm框架 398
12.1 spring整合orm技術 399
12.2 在spring中使用hibernate 400
12.2.1 配置sessionfactory 400
12.2.2 使用hibernatetemplate 403
12.2.3 處理lob型別資料 407
12.2.4 新增hibernate事件監聽器 409
12.2.5 使用原生hibernate api 409
12.2.6 使用註解配置 410
12.2.7 事務處理 412
12.2.8 延遲載入的問題 413
12.3 在spring中使用mybatis 414
12.3.1 配置sqlmapclient 415
12.3.2 在spring配置mybatis 416
12.3.3 編寫mybatis的dao 417
12.5 dao層設計 420
12.5.1 dao基類的設計 421
12.5.2 查詢介面方法的設計 423
12.5.3 分頁查詢介面設計 424
12.6 小結 425
第4篇 業務層及web層技術
第13章 任務排程和非同步執行器 428
13.1 任務排程概述 429
13.2 quartz快速進階 429
13.2.1 quartz基礎結構 430
13.2.2 使用simpletrigger 432
13.2.3 使用crontrigger 434
13.2.4 使用calendar 437
13.2.5 任務排程資訊儲存 439
13.3 在spring中使用quartz 442
13.3.1 建立jobdetail 442
13.3.2 建立trigger 444
13.3.3 建立scheduler 446
13.4 spring中使用jdk timer 447
13.4.1 timer和timertask 448
13.4.2 spring對jdk timer的支援 450
13.5 spring對jdk 5.0 executor的
支援 451
13.5.1 瞭解jdk 5.0的executor 452
13.5.2 spring對executor所提供的
抽象 454
13.6 實際應用中的任務排程 455
13.6.1 如何產生任務 456
13.6.2 任務排程對應用程式叢集的
影響 457
13.6.3 任務排程雲 458
13.6.4 web應用程式中排程器的
啟動和關閉問題 460
13.7 小結 462
第14章 使用oxm進行物件xml對映 463
14.1 認識xml解析技術 464
14.1.1 什麼是xml 464
14.1.2 xml的處理技術 464
14.2 xml處理利器:xstream 466
14.2.1 xstream概述 466
14.2.2 快速入門 466
14.2.3 使用xstream別名 469
14.2.4 xstream轉換器 470
14.2.5 xstream註解 472
14.2.6 流化物件 474
14.2.7 持久化api 475
14.2.8 額外功能:處理json 476
14.3 其他常見o/x mapping開源專案 478
14.3.1 jaxb 478
14.3.2 xmlbeans 482
14.3.3 castor 485
14.3.4 jibx 490
14.3.5 總結比較 493
14.4 與spring oxm整合 494
14.4.1 spring oxm概述 494
14.4.2 整合oxm實現者 496
14.4.3 如何在spring中進行配置 497
14.4.4 spring oxm 簡單例項 499
14.5 小結 501
第15章 spring mvc 503
15.1 spring mvc概述 504
15.1.1 體系結構 504
15.1.2 配置dispatcherservlet 505
15.1.3 一個簡單的例項 510
15.2 註解驅動的控制器 514
15.2.1 使用@requestmapping對映
請求 514
15.2.2 請求處理方法簽名概述 518
15.2.3 處理方法簽名詳細說明 519
15.2.4 使用httpmessageconverter[t] 523
15.2.5 處理模型資料 532
15.3 處理方法的資料繫結 538
15.3.1 資料繫結流程剖析 539
15.3.2 資料轉換 539
15.3.3 資料格式化 545
15.3.4 資料校驗 549
15.4 檢視和檢視解析器 558
15.4.1 認識檢視 558
15.4.2 認識檢視解析器 560
15.4.3 jsp和jstl 561
15.4.4 模板檢視 565
15.4.5 excel 569
15.4.6 pdf 570
15.4.7 輸出xml 572
15.4.8 輸出json 573
15.4.9 使用xmlviewresolver 573
15.4.10 使用resourcebundle
viewresolver 574
15.4.11 混合使用多種檢視技術 575
15.5 本地化解析 577
15.5.1 本地化概述 577
15.5.2 使用cookielocaleresolver 578
15.5.3 使用sessionlocaleresolver 579
15.5.4 使用localechangeinterceptor 579
15.6 檔案上傳 579
15.6.1 配置multipartresolver 580
15.6.2 編寫控制器和檔案上傳表單頁面 580
15.7 雜項 581
15.7.1 靜態資源處理 581
15.7.2 裝配攔截器 586
15.7.3 異常處理 587
15.8 小結 589
第5篇 測試及實戰
第16章 實戰型單元測試 592
16.1 單元測試概述 593
16.1.1 為什麼需要單元測試 593
16.1.2 單元測試之誤解 594
16.1.3 單元測試之困境 595
16.1.4 單元測試基本概念 596
16.2 junit 4快速進階 600
16.2.1 junit 4概述 600
16.2.2 junit 4生命週期 601
16.2.3 使用junit 4 601
16.3 模擬利器mockito 608
16.3.1 模擬測試概述 608
16.3.2 建立mock物件 608
16.3.3 設定mock物件的期望行為及
返回值 609
16.3.4 驗證互動行為 611
16.4 測試整合之王unitils 612
16.4.1 unitils概述 612
16.4.2 整合spring 615
16.4.3 整合hibernate 618
16.4.4 整合dbunit 619
16.4.5 自定義擴充套件模組 620
16.5 使用unitils測試dao層 620
16.5.1 資料庫測試的難點 621
16.5.2 擴充套件dbunit用excel準備資料 621
16.5.3 測試實戰 624
16.6 使用unitils測試service層 634
16.7 測試web層 639
16.7.1 對logincontroller進行單元
測試 640
16.7.2 使用spring servlet api模擬
物件 641
16.7.3 使用spring resttemplate測試 642
16.7.4 使用selenium測試 644
16.8 小結 647
第17章 實戰案例開發 648
17.1 論壇案例概述 649
17.1.1 論壇整體功能結構 649
17.1.2 論壇用例描述 649
17.1.3 主要功能流程描述 651
17.2 系統設計 655
17.2.1 技術框架選擇 655
17.2.2 web目錄結構及類包結構規劃 656
17.2.3 單元測試類包結構規劃 657
17.2.4 系統的結構圖 657
17.2.5 po的類設計 658
17.2.6 持久層設計 659
17.2.7 服務層設計 659
17.2.8 web層設計 660
17.2.9 資料庫設計 661
17.3 開發前的準備 663
17.4 持久層開發 664
17.4.1 po類 664
17.4.2 dao基類 666
17.4.3 透過擴充套件基類所定義dao類 671
17.4.4 dao bean的裝配 672
17.4.5 使用hibernate二級快取 674
17.5 對持久層進行測試 676
17.5.1 配置unitils測試環境 676
17.5.2 準備測試資料庫及測試資料 677
17.5.3 編寫dao測試基類 678
17.5.4 編寫boarddao測試用例 678
17.6 服務層開發 680
17.6.1 userservice的開發 680
17.6.2 forumservice的開發 682
17.6.3 服務類bean的裝配 685
17.7 對服務層進行測試 686
17.7.1 編寫service測試基類 687
17.7.2 編寫forumservice測試用例 687
17.8 web層開發 689
17.8.1 basecontroller的基類 689
17.8.2 使用者登入和登出 691
17.8.3 使用者註冊 692
17.8.4 論壇管理 694
17.8.5 論壇普通功能 696
17.8.6 分頁顯示論壇版塊的主題帖子 698
17.8.7 web.xml配置 702
17.8.8 spring mvc配置 704
17.9 對web層進行測試 705
17.9.1 編寫web測試基類 705
17.9.2 編寫forummanagecontroller
測試用例 706
17.10 部署和執行應用 707
17.11 小結 710
以下內容詳見本書配書光碟:
附錄a javamail傳送郵件 711
附錄b 在spring中開發web service 738
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16566727/viewspace-716777/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 《精通Spring4.x企業應用開發實戰》第二章Spring
- 《企業級ios應用開發實戰》一第1章企業應用的話題iOS
- 《精通Spring4.x企業應用開發實戰》第三章Spring
- OpenAI Assistants API 企業級應用實戰OpenAIAPI
- 《SpringBoot實戰開發》——基於Gradle+Kotlin的企業級應用開發最佳實踐Spring BootGradleKotlin
- Java的企業應用開發死期已到Java
- Java EE 6之企業應用開發Java
- 實戰Comet 應用程式開發
- AI 大模型企業應用實戰(06)-初識LangChain大模型LangChain
- ionic4 開發企業微信應用0
- [轉]企業應用開發架構談(一)架構
- 如何快速開發Java RCP企業級應用?Java
- 企業應用開發架構談(一) (轉)架構
- 企業應用開發架構談(二) (轉)架構
- 企業應用開發架構談(三) (轉)架構
- Kurento實戰之四:應用開發指南
- IDEA開發Spark應用實戰(Scala)IdeaSpark
- ASP.NET Core 6 從入門到企業級實戰開發應用技術彙總ASP.NET
- BizWorks助力企業應用的高效開發與複用
- 新書推薦《Spring 2企業應用開發》和《深入解析Spring MVC與Web Flow》新書SpringMVCWeb
- Spring Boot應用監控實戰Spring Boot
- Cordova - 使用Cordova開發iOS應用實戰1(配置、開發第一個應用)iOS
- .NET企業應用安全開發動向-概覽
- 企業微信自建應用開發-免密登入
- 用Servlet開發企業級三層Web應用(一) (轉)ServletWeb
- 【Spring實戰】構建Spring Web應用程式SpringWeb
- 企業應用開發和開放原始碼專案 (轉)原始碼
- 企業級 Web 開發的挑戰Web
- 低程式碼應用開發平臺,讓企業開發更高效
- 輕量級Java EE企業應用實戰(第4版):Struts 2+Spring 4+Hibernate整合開發(含CD光碟1張)JavaSpring
- (44)java Spring Cloud企業快速開發架構之Gateway實戰案例限流、熔斷、跨JavaSpringCloud架構Gateway
- AI 大模型企業應用實戰(10)-LLMs和Chat ModelsAI大模型
- 企業應用程式為什麼要定製開發
- 快速構建企業級應用的開發平臺
- 低程式碼開發:企業應用構建新模式模式
- 企業應用開發中.NET EF常用哪種模式?模式
- 為 WebSphere Application Server 開發企業 OSGi 應用程式WebAPPServer
- RAG應用開發實戰(01)-RAG應用框架和解析器框架