第一部分 掀起Spring的蓋頭來
第1章 Spring框架的由來 2
1.1 Spring之崛起 2
1.2 Spring框架概述 3
1.3 Spring大觀園 5
1.4 小結 8
第二部分 Spring的IoC容器
第2章 IoC的基本概念 10
2.1 我們的理念是:讓彆人為你服務 10
2.2 手語,呼喊,還是心有靈犀 13
2.2.1 構造方法注入 13
2.2.2 setter方法注入 13
2.2.3 接口注入 14
2.2.4 三種注入方式的比較 15
2.3 IoC的附加值 15
2.4 小結 17
第3章 掌管大局的IoC Service Provider 18
3.1 IoC Service Provider的職責 18
3.2 運籌帷幄的秘密——IoC Service Provider如何管理對象間的依賴關係 19
3.2.1 直接編碼方式 19
3.2.2 配置文件方式 20
3.2.3 元數據方式 21
3.3 小結 21
第4章 Spring的IoC容器之BeanFactory 22
4.1 擁有BeanFactory之後的生活 24
4.2 BeanFactory的對象注冊與依賴綁定方式 26
4.2.1 直接編碼方式 26
4.2.2 外部配置文件方式 28
4.2.3 注解方式 31
4.3 BeanFactory的XML之旅 33
4.3.1 beans和bean 33
4.3.2 孤孤單單一個人 35
4.3.3 Help Me, Help You 36
4.3.4 繼承?我也會! 50
4.3.5 bean的scope 51
4.3.6 工廠方法與FactoryBean 56
4.3.7 偷梁換柱之術 61
4.4 容器背後的秘密 66
4.4.1 “戰略性觀望” 66
4.4.2 插手“容器的啓動” 67
4.4.3 瞭解bean的一生 74
4.5 小結 85
第5章 Spring IoC容器ApplicationContext 86
5.1 統一資源加載策略 86
5.1.1 Spring中的Resource 87
5.1.2 ResourceLoader,“更廣義的URL” 88
5.1.3 ApplicationContext與ResourceLoader 91
5.2 國際化信息支持(I18n MessageSource) 97
5.2.1 Java SE提供的國際化支持 97
5.2.2 MessageSource與ApplicationContext 98
5.3 容器內部事件發布 102
5.3.1 自定義事件發布 102
5.3.2 Spring的容器內事件發布類結構分析 105
5.3.3 Spring容器內事件發布的應用 107
5.4 多配置模塊加載的簡化 109
5.5 小結 110
第6章 Spring IoC容器之擴展篇 111
6.1 Spring 2.5的基於注解的依賴注入 111
6.1.1 注解版的自動綁定(@Autowired) 111
6.1.2 @Autowired之外的選擇——使用JSR250標注依賴注入關係 115
6.1.3 將革命進行得更徹底一些(class-path-scanning功能介紹) 116
6.2 Spring 3.0展望 119
6.3 小結 120
第三部分 Spring AOP框架
第7章 一起來看AOP 122
7.1 AOP的尷尬 124
7.2 AOP走嚮現實 125
7.2.1 靜態AOP時代 125
7.2.2 動態AOP時代 126
7.3 Java平颱上的AOP實現機製 126
7.3.1 動態代理 126
7.3.2 動態字節碼增強 126
7.3.3 Java代碼生成 127
7.3.4 自定義類加載器 127
7.3.5 AOL擴展 127
7.4 AOP國傢的公民 128
7.4.1 Joinpoint 128
7.4.2 Pointcut 130
7.4.3 Advice 131
7.4.4 Aspect 133
7.4.5 織入和織入器 133
7.4.6 目標對象 133
7.5 小結 134
第8章 Spring AOP概述及其實現機製 135
8.1 Spring AOP概述 135
8.2 Spring AOP的實現機製 136
8.2.1 設計模式之代理模式 136
8.2.2 動態代理 139
8.2.3 動態字節碼生成 141
8.3 小結 142
第9章 Spring AOP一世 143
9.1 Spring AOP中的Joinpoint 143
9.2 Spring AOP中的Pointcut 144
9.2.1 常見的Pointcut 146
9.2.2 擴展Pointcut(Customize Pointcut) 151
9.2.3 IoC容器中的Pointcut 152
9.3 Spring AOP中的Advice 153
9.3.1 per-class類型的Advice 153
9.3.2 per-instance類型的Advice 159
9.4 Spring AOP中的Aspect 163
9.4.1 PointcutAdvisor傢族 164
9.4.2 IntroductionAdvisor分支 167
9.4.3 Ordered的作用 168
9.5 Spring AOP的織入 170
9.5.1 如何與ProxyFactory打交道 170
9.5.2 看清ProxyFactory的本質 175
9.5.3 容器中的織入器——ProxyFactoryBean 179
9.5.4 加快織入的自動化進程 185
9.6 TargetSource 190
9.6.1 可用的TargetSource實現類 191
9.6.2 自定義TargetSource 195
9.7 小結 197
第10章 Spring AOP二世 198
10.1 @AspectJ形式的Spring AOP 198
10.1.1 @AspectJ形式AOP使用之先睹為快 199
10.1.2 @AspectJ形式的Pointcut 201
10.1.3 @AspectJ形式的Advice 211
10.1.4 @AspectJ中的Aspect更多話題 220
10.2 基於Schema的AOP 223
10.2.1 基於Schema的AOP配置概覽 223
10.2.2 嚮基於Schema的AOP遷移 225
10.2.3 @AspectJ到“基於Schema的AOP”遷移 227
10.3 小結 235
第11章 AOP應用案例 237
11.1 異常處理 237
11.1.1 Java異常處理 237
11.1.2 Fault Barrier 238
11.2 安全檢查 239
11.3 緩存 240
11.4 小結 240
第12章 Spring AOP之擴展篇 241
12.1 有關公開當前調用的代理對象的探討 241
12.1.1 問題的現象 241
12.1.2 原因的分析 242
12.1.3 解決方案 243
12.2 小結 245
第四部分 使用Spring訪問數據
第13章 統一的數據訪問異常層次體係 249
13.1 DAO模式的背景 249
13.2 夢想照進現實 251
13.3 發現問題,解決問題 252
13.4 不重新發明輪子 254
13.5 小結 257
第14章 JDBC API的最佳實踐 258
14.1 基於Template的JDBC使用方式 258
14.1.1 JDBC的尷尬 258
14.1.2 JdbcTemplate的誕生 261
14.1.3 JdbcTemplate和它的兄弟們 274
14.1.4 Spring中的DataSource 296
14.1.5 JdbcDaoSupport 301
14.2 基於操作對象的JDBC使用方式 302
14.2.1 基於操作對象的查詢 303
14.2.2 基於操作對象的更新 310
14.2.3 基於操作對象的存儲過程調用 313
14.3 小結 316
第15章 Spring對各種ORM的集成 317
15.1 Spring對Hibernate的集成 318
15.1.1 舊日“鼕眠”時光 318
15.1.2 “春天”裏的“鼕眠” 321
15.2 Spring對iBATIS的集成 329
15.2.1 iBATIS實踐之“前生”篇 329
15.2.2 iBATIS實踐之“今世”篇 331
15.3 Spring中對其他ORM方案的集成概述 337
15.3.1 Spring對JDO的集成 337
15.3.2 Spring對TopLink的集成 340
15.3.3 Spring對JPA的集成 341
15.4 小結 344
第16章 Spring數據訪問之擴展篇 345
16.1 活用模闆方法模式及Callback 345
16.1.1 FTPClientTemplate 345
16.1.2 HttpClientTemplate 349
16.2 數據訪問中的多數據源 350
16.2.1 “主權獨立”的多數據源 350
16.2.2 “閤縱連橫”的多數據源 352
16.2.3 結束語 354
16.3 Spring 3.0展望 356
16.4 小結 356
第五部分 事務管理
第17章 有關事務的楔子 358
17.1 認識事務本身 358
17.2 初識事務傢族成員 360
17.3 小結 362
第18章 群雄逐鹿下的Java事務管理 363
18.1 Java平颱的局部事務支持 363
18.2 Java平颱的分布式事務支持 365
18.2.1 基於JTA的分布式事務管理 366
18.2.2 基於JCA的分布式事務管理 367
18.3 繼續前行之前的反思 367
18.4 小結 369
第19章 Spring事務王國的架構 370
19.1 統一中原的過程 371
19.2 和平年代 376
19.2.1 TransactionDefinition 376
19.2.2 TransactionStatus 382
19.2.3 PlatformTransac-tionManager 382
19.3 小結 392
第20章 使用Spring進行事務管理 393
20.1 編程式事務管理 393
20.1.1 直接使用PlatformTran-sactionManager進行編程式事務管理 393
20.1.2 使用TransactionTemp-late進行編程式事務管理 394
20.1.3 編程創建基於Savepoint的嵌套事務 396
20.2 聲明式事務管理 397
20.2.1 引子 397
20.2.2 XML元數據驅動的聲明式事務 399
20.2.3 注解元數據驅動的聲明式事務 410
20.3 小結 413
第21章 Spring事務管理之擴展篇 414
21.1 理解並活用ThreadLocal 414
21.1.1 理解ThreadLocal的存在背景 414
21.1.2 理解ThreadLocal的實現 415
21.1.3 ThreadLocal的應用場景 416
21.1.4 使用ThreadLocal管理多數據源切換的條件 417
21.2 談Strategy模式在開發過程中的應用 420
21.3 Spring與JTA背後的奧秘 423
21.4 小結 427
第六部分 Spring的Web MVC框架
第22章 邁嚮Spring MVC的旅程 430
22.1 Servlet獨行天下的時代 430
22.2 繁盛一時的JSP時代 433
22.3 Servlet與JSP的聯盟 436
22.4 數英雄人物,還看今朝 438
22.5 小結 440
第23章 Spring MVC初體驗 441
23.1 鳥瞰Spring MVC 442
23.2 實踐齣真知 446
23.2.1 Spring MVC應用的物理結構 447
23.2.2 按部就班地開始工作 451
23.3 小結 459
第24章 近距離接觸Spring MVC主要角色 460
24.1 忙碌的協調人HandlerMapping 460
24.1.1 可用的HandlerMapping 461
24.1.2 HandlerMapping執行序列(Chain Of HandlerMapping) 463
24.2 我們的親密夥伴Controller 464
24.2.1 AbstractController 465
24.2.2 MultiActionController 468
24.2.3 SimpleFormController 476
24.2.4 AbstractWizard-FormController 496
24.2.5 其他可用的Controller實現 503
24.3 ModelAndView 505
24.3.1 ModelAndView中的視圖信息 505
24.3.2 ModelAndView中的模型數據 506
24.4 視圖定位器ViewResolver 506
24.4.1 可用的ViewResolver實現類 507
24.4.2 ViewResolver查找序列(Chain Of ViewResolver) 511
24.5 各司其職的View 511
24.5.1 View實現原理迴顧 512
24.5.2 可用的View實現類 515
24.5.3 自定義View實現 521
24.6 小結 523
第25章 認識更多Spring MVC傢族成員 524
25.1 文件上傳與MultipartResolver 525
25.1.1 使用MultipartResolver進行文件上傳的簡單分析 526
25.1.2 文件上傳實踐 527
25.2 Handler與HandlerAdaptor 530
25.2.1 問題的起源 530
25.2.2 深入瞭解Handler 531
25.2.3 近看HandlerAdaptor的奧秘 533
25.2.4 告知Handler與Handler-Adaptor的存在 535
25.3 框架內處理流程攔截與Handler-Interceptor 536
25.3.1 可用的Handler-Interceptor實現 537
25.3.2 自定義實現Handler-Interceptor 538
25.3.3 HandlerInterceptor尋根 540
25.3.4 HandlerInterceptor之外的選擇 541
25.4 框架內的異常處理與Handler-ExceptionResolver 544
25.5 國際化視圖與LocalResolver 548
25.5.1 可用的LocaleResolver 549
25.5.2 LocaleResolver的足跡 550
25.5.3 Locale的變更與LocaleChangeHandler 551
25.6 主題(Theme)與ThemeResolver 552
25.6.1 提供主題資源的ThemeSource 552
25.6.2 管理主題的ThemeResolver 554
25.6.3 切換主題的ThemeChange-Interceptor 555
25.7 小結 556
第26章 Spring MVC中基於注解的Controller 557
26.1 初識基於注解的Controller 557
26.2 基於注解的Controller原型分析 558
26.2.1 自定義用於基於注解的Contro-ller的HandlerMapping 558
26.2.2 自定義用於基於注解的Contro-ller的HandlerAdaptor 560
26.3 近看基於注解的Controller 563
26.3.1 聲明基於注解的Controller 563
26.3.2 請求參數到方法參數的綁定 569
26.3.3 使用@ModelAttribute訪問模型數據 572
26.3.4 通過@SessionAttribute管理Session數據 574
26.4 小結 576
第27章 Spring MVC之擴展篇 577
27.1 Spring MVC也Convention Over Configuration 577
27.1.1 Convention Over Configuration簡介 577
27.1.2 Spring MVC中的Convention Over Configuration 578
27.2 Spring 3.0展望 581
27.3 小結 582
第七部分 Spring框架對J2EE服務的集成和支持
第28章 Spring框架內的JNDI支持 584
28.1 JNDI簡單迴顧 584
28.2 Spring框架內JNDI訪問的基石——JndiTemplate 585
28.3 JNDI對象的依賴注入——JndiObjectFactoryBean 587
28.4 小結 588
第29章 Spring框架對JMS的集成 589
29.1 說說JMS的身世 589
29.2 使用JMS API進行應用開發的傳統套路 590
29.3 Spring改進後的JMS實戰格鬥術 592
29.3.1 消息發送和同步接收 592
29.3.2 異步消息接收 601
29.3.3 JMS相關異常處理 607
29.3.4 框架內的事務管理支持 608
29.4 小結 609
第30章 使用Spring發送E-mail 610
30.1 思甜前,先憶苦 610
30.2 Spring的E-mail抽象層分析 612
30.2.1 直接創建郵件消息並發送 614
30.2.2 使用MimeMessage-Preparator發送郵件 615
30.3 Spring的E-mail支持在實際開發中的應用 616
30.4 小結 622
第31章 Spring中的任務調度和綫程池支持 623
31.1 Spring與Quartz 623
31.1.1 初識Quartz 623
31.1.2 融入Spring大傢庭的Quartz 626
31.2 Spring對JDK Timer的集成 631
31.2.1 JDK Timer小記 631
31.2.2 Spring集成後的JDK Timer 632
31.3 Executor的孿生兄弟TaskExecutor 634
31.3.1 可用的TaskExecutor 635
31.3.2 TaskExecutor使用實例 637
31.4 小結 639
第32章 Spring框架對J2EE服務的集成之擴展篇 640
32.1 MailMonitor的延伸 640
32.2 Spring 3.0展望 642
32.3 小結 642
第33章 Spring遠程方案 643
33.1 從“對麵交談”到“韆裏傳聲” 643
33.2 Spring Remoting架構分析 645
33.2.1 Spring Remoting之遠程訪問異常體係 645
33.2.2 統一風格的遠程服務公開與訪問方式 646
33.3 Spring Remoting提供的遠程服務支持 648
33.3.1 基於RMI的Remoting方案 648
33.3.2 基於HTTP的輕量級Remoting方案 651
33.3.3 基於Web服務的遠程方案 655
33.3.4 基於JMS的遠程方案 658
33.4 擴展Spring Remoting 660
33.5 Spring Remoting之擴展篇 663
33.5.1 拉開JMX演齣的序幕 663
33.5.2 Spring 3.0展望 664
參考文獻 665
· · · · · · (
收起)