第1篇 基礎篇
第1章 Spring概述\t2
1.1 認識Spring\t2
1.2 關於SpringSource\t4
1.3 Spring帶給我們什麼\t5
1.4 Spring體係結構\t6
1.5 Spring對Java版本的要求\t8
1.6 Spring 4.0新特性\t8
1.6.1 全麵支持Java 8.0\t9
1.6.2 核心容器的增強\t11
1.6.3 支持用Groovy定義Bean\t12
1.6.4 Web的增強\t12
1.6.5 支持WebSocket\t12
1.6.6 測試的增強\t13
1.6.7 其他\t13
1.7 Spring子項目\t13
1.8 如何獲取Spring\t15
1.9 小結\t16
第2章 快速入門\t17
2.1 實例概述\t17
2.1.1 比Hello World更適用的實例\t18
2.1.2 實例功能簡介\t18
2.2 環境準備\t20
2.2.1 構建工具Maven\t20
2.2.2 創建庫錶\t22
2.2.3 建立工程\t23
2.2.4 類包及Spring配置文件規劃\t28
2.3 持久層\t29
2.3.1 建立領域對象\t29
2.3.2 UserDao\t30
2.3.3 LoginLogDao\t33
2.3.4 在Spring中裝配DAO\t34
2.4 業務層\t35
2.4.1 UserService\t35
2.4.2 在Spring中裝配Service\t37
2.4.3 單元測試\t38
2.5 展現層\t40
2.5.1 配置Spring MVC框架\t40
2.5.2 處理登錄請求\t42
2.5.3 JSP視圖頁麵\t44
2.6 運行Web應用\t46
2.7 小結\t48
第3章 Spring Boot\t49
3.1 Spring Boot概覽\t49
3.1.1 Spring Boot發展背景\t50
3.1.2 Spring Boot特點\t50
3.1.3 Spring Boot啓動器\t50
3.2 快速入門\t52
3.3 安裝配置\t54
3.3.1 基於Maven環境配置\t54
3.3.2 基於Gradle環境配置\t56
3.3.3 基於Spring Boot CLI環境
配置\t57
3.3.4 代碼包結構規劃\t58
3.4 持久層\t59
3.4.1 初始化配置\t59
3.4.2 UserDao\t61
3.5 業務層\t62
3.6 展現層\t64
3.6.1 配置pom.xml依賴\t64
3.6.2 配置Spring MVC框架\t65
3.6.3 處理登錄請求\t65
3.7 運維支持\t67
3.8 小結\t70
第2篇 核心篇
第4章 IoC容器\t72
4.1 IoC概述\t72
4.1.1 通過實例理解IoC的概念\t73
4.1.2 IoC的類型\t75
4.1.3 通過容器完成依賴關係的
注入\t77
4.2 相關Java基礎知識\t78
4.2.1 簡單實例\t78
4.2.2 類裝載器ClassLoader\t80
4.2.3 Java反射機製\t83
4.3 資源訪問利器\t85
4.3.1 資源抽象接口\t85
4.3.2 資源加載\t88
4.4 BeanFactory和ApplicationContext\t91
4.4.1 BeanFactory介紹\t92
4.4.2 ApplicationContext介紹\t94
4.4.3 父子容器\t103
4.5 Bean的生命周期\t103
4.5.1 BeanFactory中Bean的生命
周期\t103
4.5.2 ApplicationContext中Bean
的生命周期\t112
4.6 小結\t114
第5章 在IoC容器中裝配Bean\t115
5.1 Spring配置概述\t116
5.1.1 Spring容器高層視圖\t116
5.1.2 基於XML的配置\t117
5.2 Bean基本配置\t120
5.2.1 裝配一個Bean\t120
5.2.2 Bean的命名\t120
5.3 依賴注入\t121
5.3.1 屬性注入\t121
5.3.2 構造函數注入\t124
5.3.3 工廠方法注入\t128
5.3.4 選擇注入方式的考量\t130
5.4 注入參數詳解\t130
5.4.1 字麵值\t130
5.4.2 引用其他Bean\t131
5.4.3 內部Bean\t133
5.4.4 null值\t133
5.4.5 級聯屬性\t134
5.4.6 集閤類型屬性\t134
5.4.7 簡化配置方式\t138
5.4.8 自動裝配\t141
5.5 方法注入\t142
5.5.1 lookup方法注入\t142
5.5.2 方法替換\t143
5.6 <bean>之間的關係\t144
5.6.1 繼承\t144
5.6.2 依賴\t145
5.6.3 引用\t146
5.7 整閤多個配置文件\t147
5.8 Bean作用域\t148
5.8.1 singleton作用域\t148
5.8.2 prototype作用域\t149
5.8.3 與Web應用環境相關的Bean
作用域\t150
5.8.4 作用域依賴問題\t152
5.9 FactoryBean\t153
5.10 基於注解的配置\t155
5.10.1 使用注解定義Bean\t155
5.10.2 掃描注解定義的Bean\t156
5.10.3 自動裝配Bean\t157
5.10.4 Bean作用範圍及生命過程
方法\t162
5.11 基於Java類的配置\t164
5.11.1 使用Java類提供Bean定義
信息\t164
5.11.2 使用基於Java類的配置信息
啓動Spring容器\t167
5.12 基於Groovy DSL的配置\t169
5.12.1 使用Groovy DSL提供Bean
定義信息\t169
5.12.2 使用GenericGroovyApplication
Context啓動Spring容器\t171
5.13 通過編碼方式動態添加Bean\t172
5.13.1 通過DefaultListableBean
Factory\t172
5.13.2 擴展自定義標簽\t173
5.14 不同配置方式比較\t175
5.15 小結\t177
第6章 Spring容器高級主題\t178
6.1 Spring容器技術內幕\t178
6.1.1 內部工作機製\t179
6.1.2 BeanDefinition\t182
6.1.3 InstantiationStrategy\t183
6.1.4 BeanWrapper\t183
6.2 屬性編輯器\t184
6.2.1 JavaBean的編輯器\t185
6.2.2 Spring默認屬性編輯器\t188
6.2.3 自定義屬性編輯器\t189
6.3 使用外部屬性文件\t192
6.3.1 PropertyPlaceholderConfigurer
屬性文件\t192
6.3.2 使用加密的屬性文件\t195
6.3.3 屬性文件自身的引用\t198
6.4 引用Bean的屬性值\t199
6.5 國際化信息\t201
6.5.1 基礎知識\t201
6.5.2 MessageSource\t206
6.5.3 容器級的國際化信息資源\t209
6.6 容器事件\t210
6.6.1 Spring事件類結構\t211
6.6.2 解構Spring事件體係的具體
實現\t213
6.6.3 一個實例\t214
6.7 小結\t215
第7章 Spring AOP基礎\t216
7.1 AOP概述\t216
7.1.1 AOP到底是什麼\t217
7.1.2 AOP術語\t219
7.1.3 AOP的實現者\t221
7.2 基礎知識\t222
7.2.1 帶有橫切邏輯的實例\t222
7.2.2 JDK動態代理\t224
7.2.3 CGLib動態代理\t228
7.2.4 AOP聯盟\t229
7.2.5 代理知識小結\t230
7.3 創建增強類\t230
7.3.1 增強類型\t230
7.3.2 前置增強\t231
7.3.3 後置增強\t235
7.3.4 環繞增強\t236
7.3.5 異常拋齣增強\t237
7.3.6 引介增強\t239
7.4 創建切麵\t243
7.4.1 切點類型\t243
7.4.2 切麵類型\t244
7.4.3 靜態普通方法名匹配切麵\t246
7.4.4 靜態正則錶達式方法匹配
切麵\t248
7.4.5 動態切麵\t251
7.4.6 流程切麵\t254
7.4.7 復閤切點切麵\t256
7.4.8 引介切麵\t258
7.5 自動創建代理\t259
7.5.1 實現類介紹\t259
7.5.2 BeanNameAutoProxyCreator\t260
7.5.3 DefaultAdvisorAutoProxy
Creator\t261
7.5.4 AOP無法增強疑難問題
剖析\t262
7.6 小結\t267
第8章 基於@AspectJ和Schema的
AOP\t269
8.1 Spring對AOP的支持\t269
8.2 Java 5.0注解知識快速進階\t270
8.2.1 瞭解注解\t270
8.2.2 一個簡單的注解類\t271
8.2.3 使用注解\t272
8.2.4 訪問注解\t273
8.3 著手使用@AspectJ\t274
8.3.1 使用前的準備\t275
8.3.2 一個簡單的例子\t275
8.3.3 如何通過配置使用@AspectJ
切麵\t277
8.4 @AspectJ語法基礎\t278
8.4.1 切點錶達式函數\t278
8.4.2 在函數入參中使用通配符\t279
8.4.3 邏輯運算符\t280
8.4.4 不同增強類型\t281
8.4.5 引介增強用法\t282
8.5 切點函數詳解\t283
8.5.1 @annotation()\t284
8.5.2 execution()\t285
8.5.3 args()和@args()\t287
8.5.4 within()\t288
8.5.5 @within()和@target()\t289
8.5.6 target()和this()\t290
8.6 @AspectJ進階\t291
8.6.1 切點復閤運算\t292
8.6.2 命名切點\t292
8.6.3 增強織入的順序\t294
8.6.4 訪問連接點信息\t294
8.6.5 綁定連接點方法入參\t295
8.6.6 綁定代理對象\t297
8.6.7 綁定類注解對象\t298
8.6.8 綁定返迴值\t299
8.6.9 綁定拋齣的異常\t299
8.7 基於Schema配置切麵\t300
8.7.1 一個簡單切麵的配置\t300
8.7.2 配置命名切點\t302
8.7.3 各種增強類型的配置\t303
8.7.4 綁定連接點信息\t305
8.7.5 Advisor配置\t306
8.8 混閤切麵類型\t307
8.8.1 混閤使用各種切麵類型\t308
8.8.2 各種切麵類型總結\t308
8.9 其他\t309
8.9.1 JVM Class文件字節碼轉換
基礎知識\t309
8.9.2 使用LTW織入切麵\t311
8.10 小結\t314
第9章 Spring SpEL\t316
9.1 JVM動態語言\t316
9.2 SpEL錶達式概述\t318
9.3 SpEL核心接口\t319
9.3.1 EvaluationContext接口\t320
9.3.2 SpEL編譯器\t321
9.4 SpEL基礎錶達式\t323
9.4.1 文本字符解析\t323
9.4.2 對象屬性解析\t323
9.4.3 數組、集閤類型解析\t324
9.4.4 方法解析\t326
9.4.5 操作符解析\t327
9.4.6 安全導航操作符\t329
9.4.7 三元操作符\t330
9.4.8 Elvis操作符\t331
9.4.9 賦值、類型、構造器、變量\t332
9.4.10 集閤過濾\t335
9.4.11 集閤轉換\t335
9.5 在Spring中使用SpEL\t336
9.5.1 基於XML的配置\t336
9.5.2 基於注解的配置\t337
9.6 小結\t338
第3篇 數據篇
第10章 Spring對DAO的支持\t340
10.1 Spring的DAO理念\t340
10.2 統一的異常體係\t341
10.2.1 Spring的DAO異常體係\t341
10.2.2 JDBC的異常轉換器\t343
10.2.3 其他持久化技術的異常
轉換器\t344
10.3 統一數據訪問模闆\t344
10.3.1 使用模闆和迴調機製\t345
10.3.2 Spring為不同持久化技術
所提供的模闆類\t347
10.4 數據源\t348
10.4.1 配置一個數據源\t348
10.4.2 獲取JNDI數據源\t352
10.4.3 Spring的數據源實現類\t353
10.5 小結\t353
第11章 Spring的事務管理\t355
11.1 數據庫事務基礎知識\t355
11.1.1 何為數據庫事務\t356
11.1.2 數據並發的問題\t357
11.1.3 數據庫鎖機製\t359
11.1.4 事務隔離級彆\t360
11.1.5 JDBC對事務的支持\t361
11.2 ThreadLocal基礎知識\t362
11.2.1 ThreadLocal是什麼\t363
11.2.2 ThreadLocal的接口方法\t363
11.2.3 一個TheadLocal實例\t364
11.2.4 與Thread同步機製的比較\t366
11.2.5 Spring使用ThreadLocal解決
綫程安全問題\t366
11.3 Spring對事務管理的支持\t368
11.3.1 事務管理關鍵抽象\t369
11.3.2 Spring的事務管理器實現類\t371
11.3.3 事務同步管理器\t374
11.3.4 事務傳播行為\t375
11.4 編程式的事務管理\t376
11.5 使用XML配置聲明式事務\t377
11.5.1 一個將被實施事務增強的
服務接口\t379
11.5.2 使用原始的TransactionProxy
FactoryBean\t379
11.5.3 基於aop/tx命名空間的配置\t382
11.6 使用注解配置聲明式事務\t385
11.6.1 使用@Transactional注解\t385
11.6.2 通過AspectJ LTW引入事務
切麵\t389
11.7 集成特定的應用服務器\t390
11.7.1 BEA WebLogic\t390
11.7.2 WebSphere\t390
11.8 小結\t390
第12章 Spring的事務管理難點剖析\t392
12.1 DAO和事務管理的牽絆\t393
12.1.1 JDBC訪問數據庫\t393
12.1.2 Hibernate訪問數據庫\t395
12.2 應用分層的迷惑\t398
12.3 事務方法嵌套調用的迷茫\t401
12.3.1 Spring事務傳播機製迴顧\t401
12.3.2 相互嵌套的服務方法\t402
12.4 多綫程的睏惑\t405
12.4.1 Spring通過單實例化Bean
簡化多綫程問題\t405
12.4.2 啓動獨立綫程調用事務
方法\t405
12.5 聯閤軍種作戰的混亂\t408
12.5.1 Spring事務管理器的應對\t408
12.5.2 Hibernate+Spring JDBC
混閤框架的事務管理\t408
12.6 特殊方法成漏網之魚\t412
12.6.1 哪些方法不能實施Spring
AOP事務\t412
12.6.2 事務增強遺漏實例\t413
12.7 數據連接泄露\t416
12.7.1 底層連接資源的訪問問題\t416
12.7.2 Spring JDBC數據連接泄露\t417
12.7.3 事務環境下通過DataSource
Utils獲取數據連接\t420
12.7.4 無事務環境下通過DataSource
Utils獲取數據連接\t422
12.7.5 JdbcTemplate如何做到對連接
泄露的免疫\t424
12.7.6 使用TransactionAwareData
SourceProxy\t425
12.7.7 其他數據訪問技術的等價類\t426
12.8 小結\t426
第13章 使用Spring JDBC訪問
數據庫\t428
13.1 使用Spring JDBC\t428
13.1.1 JdbcTemplate小試牛刀\t429
13.1.2 在DAO中使用Jdbc
Template\t429
13.2 基本的數據操作\t431
13.2.1 更改數據\t431
13.2.2 返迴數據庫的錶自增主鍵值\t434
13.2.3 批量更改數據\t436
13.2.4 查詢數據\t437
13.2.5 查詢單值數據\t440
13.2.6 調用存儲過程\t442
13.3 BLOB/CLOB類型數據的操作\t444
13.3.1 如何獲取本地數據連接\t445
13.3.2 相關的操作接口\t446
13.3.3 插入LOB類型的數據\t448
13.3.4 以塊數據方式讀取LOB
數據\t450
13.3.5 以流數據方式讀取LOB
數據\t451
13.4 自增鍵和行集\t452
13.4.1 自增鍵的使用\t452
13.4.2 如何規劃主鍵方案\t454
13.4.3 以行集返迴數據\t456
13.5 NamedParameterJdbcTemplate
模闆類\t456
13.6 小結\t459
第14章 整閤其他ORM框架\t460
14.1 Spring整閤ORM技術\t460
14.2 在Spring中使用Hibernate\t462
14.2.1 配置SessionFactory\t462
14.2.2 使用HibernateTemplate\t465
14.2.3 處理LOB類型的數據\t469
14.2.4 添加Hibernate事件監聽器\t470
14.2.5 使用原生的Hibernate API\t471
14.2.6 使用注解配置\t472
14.2.7 事務處理\t474
14.2.8 延遲加載問題\t475
14.3 在Spring中使用MyBatis\t476
14.3.1 配置SqlMapClient\t476
14.3.2 在Spring中配置MyBatis\t478
14.3.3 編寫MyBatis的DAO\t479
14.4 DAO層設計\t482
14.4.1 DAO基類設計\t482
14.4.2 查詢接口方法設計\t484
14.4.3 分頁查詢接口設計\t486
14.5 小結\t487
第4篇 應用篇
第15章 Spring Cache\t490
15.1 緩存概述\t490
15.1.1 緩存的概念\t490
15.1.2 使用Spring Cache\t493
15.2 掌握Spring Cache抽象\t498
15.2.1 緩存注解\t498
15.2.2 緩存管理器\t504
15.2.3 使用SpEL錶達式\t506
15.2.4 基於XML的Cache聲明\t506
15.2.5 以編程方式初始化緩存\t507
15.2.6 自定義緩存注解\t509
15.3 配置Cache存儲\t509
15.3.1 EhCache\t510
15.3.2 Guava\t510
15.3.3 HazelCast\t511
15.3.4 GemFire\t511
15.3.5 JSR-107 Cache\t511
15.4 實戰經驗\t513
15.5 小結\t514
第16章 任務調度和異步執行器\t516
16.1 任務調度概述\t516
16.2 Quartz快速進階\t517
16.2.1 Quartz基礎結構\t518
16.2.2 使用SimpleTrigger\t520
16.2.3 使用CronTrigger\t522
16.2.4 使用Calendar\t526
16.2.5 任務調度信息存儲\t527
16.3 在Spring中使用Quartz\t530
16.3.1 創建JobDetail\t530
16.3.2 創建Trigger\t533
16.3.3 創建Scheduler\t534
16.4 在Spring中使用JDK Timer\t536
16.4.1 Timer和TimerTask\t536
16.4.2 Spring對Java Timer的支持\t539
16.5 Spring對Java 5.0 Executor的
支持\t540
16.5.1 瞭解Java 5.0的Executor\t541
16.5.2 Spring對Executor所提供的
抽象\t543
16.6 實際應用中的任務調度\t544
16.6.1 如何産生任務\t545
16.6.2 任務調度對應用程序集群的
影響\t547
16.6.3 任務調度雲\t547
16.6.4 Web應用程序中調度器的
啓動和關閉問題\t549
16.7 小結\t552
第17章 Spring MVC\t553
17.1 Spring MVC體係概述\t554
17.1.1 體係結構\t554
17.1.2 配置DispatcherServlet\t555
17.1.3 一個簡單的實例\t560
17.2 注解驅動的控製器\t565
17.2.1 使用@RequestMapping
映射請求\t565
17.2.2 請求處理方法簽名\t569
17.2.3 使用矩陣變量綁定參數\t570
17.2.4 請求處理方法簽名詳細說明\t571
17.2.5 使用HttpMessageConverter
<T>\t575
17.2.6 使用@RestController和AsyncRestTemplate\t584
17.2.7 處理模型數據\t586
17.3 處理方法的數據綁定\t591
17.3.1 數據綁定流程剖析\t592
17.3.2 數據轉換\t592
17.3.3 數據格式化\t598
17.3.4 數據校驗\t602
17.4 視圖和視圖解析器\t611
17.4.1 認識視圖\t611
17.4.2 認識視圖解析器\t612
17.4.3 JSP和JSTL\t613
17.4.4 模闆視圖\t618
17.4.5 Excel\t621
17.4.6 PDF\t623
17.4.7 輸齣XML\t625
17.4.8 輸齣JSON\t626
17.4.9 使用XmlViewResolver\t626
17.4.10 使用ResourceBundleView
Resolver\t627
17.4.11 混閤使用多種視圖技術\t628
17.5 本地化解析\t630
17.5.1 本地化的概念\t630
17.5.2 使用CookieLocaleResolver\t631
17.5.3 使用SessionLocaleResolver\t632
17.5.4 使用LocaleChange
Interceptor\t632
17.6 文件上傳\t633
17.6.1 配置MultipartResolver\t633
17.6.2 編寫控製器和文件上傳錶單
頁麵\t633
17.7 WebSocket支持\t634
17.7.1 使用WebSocket\t634
17.7.2 WebSocket的限製\t638
17.8 雜項\t639
17.8.1 靜態資源處理\t639
17.8.2 裝配攔截器\t643
17.8.3 異常處理\t644
17.8.4 RequestContextHolder的
使用\t646
17.9 小結\t646
第18章 實戰案例開發\t648
18.1 論壇案例概述\t648
18.1.1 論壇整體功能結構\t648
18.1.2 論壇用例描述\t649
18.1.3 主要功能流程描述\t651
18.2 係統設計\t655
18.2.1 技術框架選擇\t655
18.2.2 采用Maven構建項目\t656
18.2.3 單元測試類包結構規劃\t657
18.2.4 係統架構圖\t658
18.2.5 PO類設計\t658
18.2.6 持久層設計\t659
18.2.7 服務層設計\t660
18.2.8 Web層設計\t661
18.2.9 數據庫設計\t662
18.3 開發前的準備\t663
18.4 持久層開發\t664
18.4.1 PO類\t664
18.4.2 DAO基類\t666
18.4.3 通過擴展基類定義DAO類\t670
18.4.4 DAO Bean的裝配\t672
18.4.5 使用Hibernate二級緩存\t673
18.5 對持久層進行測試\t675
18.5.1 配置Unitils測試環境\t675
18.5.2 準備測試數據庫及測試
數據\t676
18.5.3 編寫DAO測試基類\t677
18.5.4 編寫BoardDao測試用例\t678
18.6 服務層開發\t680
18.6.1 UserService的開發\t680
18.6.2 ForumService的開發\t681
18.6.3 服務類Bean的裝配\t683
18.7 對服務層進行測試\t684
18.7.1 編寫Service測試基類\t685
18.7.2 編寫ForumService測試
用例\t685
18.8 Web層開發\t687
18.8.1 BaseController的基類\t687
18.8.2 用戶登錄和注銷\t689
18.8.3 用戶注冊\t691
18.8.4 論壇管理\t692
18.8.5 論壇普通功能\t694
18.8.6 分頁顯示論壇版塊的主題
帖子\t696
18.8.7 web.xml配置\t700
18.8.8 Spring MVC配置\t702
18.9 對Web層進行測試\t703
18.9.1 編寫Web測試基類\t703
18.9.2 編寫ForumManageController
測試用例\t704
18.10 開發環境部署\t705
18.11 項目配置實戰經驗\t708
18.11.1 “傳統的”Web項目屬性
文件\t708
18.11.2 如何規劃便於部署的Web
項目屬性文件\t709
18.11.3 數據源的配置\t710
18.12 小結\t712
第5篇 提高篇
第19章 Spring OXM\t714
19.1 認識XML解析技術\t714
19.1.1 什麼是XML\t714
19.1.2 XML的處理技術\t715
19.2 XML處理利器:XStream\t717
19.2.1 XStream概述\t717
19.2.2 快速入門\t718
19.2.3 使用XStream彆名\t720
19.2.4 XStream轉換器\t721
19.2.5 XStream注解\t723
19.2.6 流化對象\t725
19.2.7 持久化API\t726
19.2.8 額外功能:處理JSON\t727
19.3 其他常見的O/X Mapping開源
項目\t729
19.3.1 JAXB\t729
19.3.2 Castor\t733
19.3.3 JiBX\t738
19.3.4 總結比較\t741
19.4 與Spring OXM整閤\t742
19.4.1 Spring OXM概述\t742
19.4.2 整閤OXM實現者\t744
19.4.3 如何在Spring中進行配置\t744
19.4.4 Spring OXM簡單實例\t747
19.5 小結\t749
第20章 實戰型單元測試\t750
20.1 單元測試概述\t751
20.1.1 為什麼需要單元測試\t751
20.1.2 單元測試之誤解\t752
20.1.3 單元測試之睏境\t754
20.1.4 單元測試基本概念\t755
20.2 TestNG快速進階\t757
20.2.1 TestNG概述\t757
20.2.2 TestNG生命周期\t758
20.2.3 使用TestNG\t758
20.3 模擬利器Mockito\t763
20.3.1 模擬測試概述\t763
20.3.2 創建Mock對象\t763
20.3.3 設定Mock對象的期望行為
及返迴值\t764
20.3.4 驗證交互行為\t766
20.4 測試整閤之王Unitils\t767
20.4.1 Unitils概述\t767
20.4.2 集成Spring\t770
20.4.3 集成Hibernate\t773
20.4.4 集成DbUnit\t774
20.4.5 自定義擴展模塊\t775
20.5 使用Unitils測試DAO層\t776
20.5.1 數據庫測試的難點\t776
20.5.2 擴展DbUnit用Excel準備
數據\t776
20.5.3 測試實戰\t779
20.6 使用Unitils測試Service層\t789
20.7 測試Web層\t794
20.7.1 對LoginController進行單元
測試\t794
20.7.2 使用Spring Servlet API模擬
對象\t795
20.7.3 使用Spring RestTemplate
測試\t797
20.8 小結\t798
· · · · · · (
收起)