內容簡介
在當今Java EE 開發中,Spring 框架是當之無愧的王者。而Spring Boot 是Spring 主推的基於“習 慣優於配置”的原則,讓你能夠快速搭建套用的框架,從而使得Java EE 開發變得異常簡單。
本書從Spring 基礎、Spring MVC 基礎講起,從而無難度地引入Spring Boot 的學習。涵蓋使用 Spring Boot 進行Java EE 開發的絕大數套用場景,包含:Web 開發、數據訪問、安全控制、批處理、 異步訊息、系統集成、開發與部署、套用監控、分散式系統開發等。 當你學完本書後,你將能使用Spring Boot 解決Java EE 開發中所遇到的絕大多數問題。
圖書目錄
目 錄
第一部分 點睛Spring 4 x 1
第1章 Spring 基礎 2
1.1 Spring 概述 2
1.1.1 Spring 的簡史 2
1.1.2 Spring 概述 3
1.2 Spring 項目快速搭建 . 5
1.2.1 Maven 簡介 6
1.2.2 Maven 安裝 6
1.2.3 Maven 的pom.xml . 7
1.2.4 Spring 項目的搭建 9
1.3 Spring 基礎配置 . 17
1.3.1 依賴注入 18
1.3.2 Java 配置 21
1.3.3 AOP . 24
第2章 Spring 常用配置 30
2.1 Bean 的Scope . 30
2.1.1 點睛 . 30
2.1.2 示例 . 31
2.2 Spring EL 和資源調用 33
目 錄 ∣ VII
2.2.1 點睛 . 33
2.2.2 示例 . 33
2.3 Bean 的初始化和銷毀 37
2.3.1 點睛 . 37
2.3.2 演示 . 38
2.4 Profile . 40
2.4.1 點睛 . 40
2.4.2 演示 . 41
2.5 事件(Application Event) 44
2.5.1 點睛 . 44
2.5.2 示例 . 44
第3章 Spring 高級話題 48
3.1 Spring Aware 48
3.1.1 點睛 . 48
3.1.2 示例 . 49
3.2 多執行緒 51
3.2.1 點睛 . 51
3.2.2 示例 . 51
3.3 計畫任務 54
3.3.1 點睛 . 54
3.3.2 示例 . 54
3.4 條件註解@Conditional 56
3.4.1 點睛 . 56
3.4.2 示例 . 57
3.5 組合註解與元註解 . 60
3.5.1 點睛 . 60
3.5.2 示例 . 60
3.6 @Enable*註解的工作原理 63
3.6.1 第一類:直接導入配置類 63
3.6.2 第二類:依據條件選擇配置類 64
3.6.3 第三類:動態註冊Bean . 65
VIII ∣ Java EE 開發的顛覆者:Spring Boot 實戰
3.7 測試 66
3.7.1 點睛 . 66
3.7.2 示例 . 67
第二部分 點睛Spring MVC 4 x
第4章 Spring MVC 基礎 72
4.1 Spring MVC 概述 . 73
4.2 Spring MVC 項目快速搭建 . 74
4.2.1 點睛 . 74
4.2.2 示例 . 74
4.3 Spring MVC 的常用註解 . 82
4.3.1 點睛 . 82
4.3.2 示例 . 83
4.4 Spring MVC 基本配置 . 87
4.4.1 靜態資源映射 88
4.4.2 攔截器配置 89
4.4.3 @ControllerAdvice 91
4.4.4 其他配置 94
4.5 Spring MVC 的高級配置 . 98
4.5.1 檔案上傳配置 98
4.5.2 自定義HttpMessageConverter 101
4.5.3 伺服器端推送技術 106
4.6 Spring MVC 的測試 . 113
4.6.1 點睛 . 113
4.6.2 示例 . 114
第三部分 實戰Spring Boot
第5章 Spring Boot 基礎 . 122
5.1 Spring Boot 概述 . 122
5.1.1 什麼是Spring Boot 122
目 錄 ∣ IX
5.1.2 Spring Boot 核心功能 122
5.1.3 Spring Boot 的優缺點 124
5.1.4 關於本書的Spring Boot 版本 . 124
5.2 Spring Boot 快速搭建 . 124
5.2.1 http://start.spring.io . 124
5.2.2 Spring Tool Suite 127
5.2.3 IntelliJ IDEA 129
5.2.4 Spring Boot CLI . 132
5.2.5 Maven 手工構建 134
5.2.6 簡單演示 136
第6章 Spring Boot 核心 . 138
6.1 基本配置 138
6.1.1 入口類和@SpringBootApplication . 138
6.1.2 關閉特定的自動配置 139
6.1.3 定製Banner . 139
6.1.4 Spring Boot 的配置檔案 140
6.1.5 starter pom 141
6.1.6 使用xml 配置 143
6.2 外部配置 143
6.2.1 命令行參數配置 143
6.2.2 常規屬性配置 144
6.2.3 類型安全的配置(基於properties) . 145
6.3 日誌配置 148
6.4 Profile 配置 148
實戰 . 148
6.5 Spring Boot 運行原理 . 150
6.5.1 運作原理 153
6.5.2 核心註解 154
6.5.3 實例分析 157
6.5.4 實戰 . 160
X ∣ Java EE 開發的顛覆者:Spring Boot 實戰
第7章 Spring Boot 的Web 開發 170
7.1 Spring Boot 的Web 開發支持 . 170
7.2 Thymeleaf 模板引擎 . 171
7.2.1 Thymeleaf 基礎知識 171
7.2.2 與Spring MVC 集成 . 174
7.2.3 Spring Boot 的Thymeleaf 支持 . 175
7.2.4 實戰 . 177
7.3 Web 相關配置 . 182
7.3.1 Spring Boot 提供的自動配置 182
7.3.2 接管Spring Boot 的Web 配置 185
7.3.3 註冊Servlet、Filter、Listener 186
7.4 Tomcat 配置 187
7.4.1 配置Tomcat . 187
7.4.2 代碼配置Tomcat . 188
7.4.3 替換Tomcat . 190
7.4.4 SSL 配置 191
7.5 Favicon 配置 . 196
7.5.1 默認的Favicon 196
7.5.2 關閉Favicon 196
7.5.3 設定自己的Favicon 197
7.6 WebSocket 197
7.6.1 什麼是WebSocket . 197
7.6.2 Spring Boot 提供的自動配置 197
7.6.3 實戰 . 198
7.7 基於Bootstrap 和AngularJS 的現代Web 套用 212
7.7.1 Bootstrap 213
7.7.2 AngularJS . 216
7.7.3 實戰 . 222
第8章 Spring Boot 的數據訪問 233
8.1 引入Docker 237
8.1.1 Docker 的安裝 . 238
目 錄 ∣ XI
8.1.2 Docker 常用命令及參數 . 242
8.1.3 下載本書所需的Docker 鏡像 247
8.1.4 異常處理 247
8.2 Spring Data JPA 248
8.2.1 點睛Spring Data JPA . 248
8.2.2 Spring Boot 的支持 258
8.2.3 實戰 . 260
8.3 Spring Data REST . 284
8.3.1 點睛Spring Data REST . 284
8.3.2 Spring Boot 的支持 285
8.3.3 實戰 . 286
8.4 聲名式事務 297
8.4.1 Spring 的事務機制 297
8.4.2 聲名式事務 298
8.4.3 註解事務行為 299
8.4.4 類級別使用@Transactional . 300
8.4.5 Spring Data JPA 的事務支持 . 300
8.4.6 Spring Boot 的事務支持 302
8.4.7 實戰 . 303
8.5 數據快取Cache 309
8.5.1 Spring 快取支持 309
8.5.2 Spring Boot 的支持 310
8.5.3 實戰 . 312
8.5.4 切換快取技術 319
8.6 非關係型資料庫NoSQL 320
8.6.1 MongoDB . 320
8.6.2 Redis 329
第9章 Spring Boot 企業級開發 340
9.1 安全控制Spring Security . 340
9.1.1 Spring Security 快速入門 340
9.1.2 Spring Boot 的支持 347
XII ∣ Java EE 開發的顛覆者:Spring Boot 實戰
9.1.3 實戰 . 348
9.2 批處理Spring Batch . 362
9.2.1 Spring Batch 快速入門 362
9.2.2 Spring Boot 的支持 370
9.2.3 實戰 . 371
9.3 異步訊息 385
9.3.1 企業級訊息代理 386
9.3.2 Spring 的支持 386
9.3.3 Spring Boot 的支持 386
9.3.4 JMS 實戰 387
9.3.5 AMQP 實戰 . 391
9.4 系統集成Spring Integration . 395
9.4.1 Spring Integration 快速入門 395
9.4.2 Message 395
9.4.3 Channel . 395
9.4.4 Message EndPoint 398
9.4.5 Spring Integration Java DSL 400
9.4.6 實戰 . 400
第10章 Spring Boot 開發部署與測試 . 407
10.1 開發的熱部署 . 407
10.1.1 模板熱部署 407
10.1.2 Spring Loaded 407
10.1.3 JRebel . 409
10.1.4 spring-boot-devtools . 413
10.2 常規部署 413
10.2.1 jar 形式 . 413
10.2.2 war 形式 . 417
10.3 雲部署——基於Docker 的部署 . 419
10.3.1 Dockerfile . 419
10.3.2 安裝Docker . 421
10.3.3 項目目錄及檔案 421
目 錄 ∣ XIII
10.3.4 編譯鏡像 423
10.3.5 運行 424
10.4 Spring Boot 的測試 . 424
10.4.1 新建Spring Boot 項目 . 425
10.4.2 業務代碼 425
10.4.3 測試用例 427
10.4.4 執行測試 429
第11章 套用監控 . 431
11.1 http 431
11.1.1 新建Spring Boot 項目 . 432
11.1.2 測試端點 432
11.1.3 定製端點 439
11.1.4 自定義端點 440
11.1.5 自定義HealthIndicator 444
11.2 JMX 447
11.3 SSH . 449
11.3.1 新建Spring Boot 項目 . 449
11.3.2 運行 449
11.3.3 常用命令 451
11.3.4 定製登錄用戶 452
11.3.5 擴展命令 452
第12章 分散式系統開發 456
12.1 微服務、原生雲套用 . 456
12.2 Spring Cloud 快速入門 . 457
12.2.1 配置服務 457
12.2.2 服務發現 457
12.2.3 路由網關 457
12.2.4 負載均衡 457
12.2.5 斷路器 458
XIV ∣ Java EE 開發的顛覆者:Spring Boot 實戰
12.3 實戰 458
12.3.1 項目構建 458
12.3.2 服務發現——Discovery(Eureka Server) . 459
12.3.3 配置——Config(Config Server) . 461
12.3.4 服務模組——Person 服務 463
12.3.5 服務模組——Some 服務 466
12.3.6 界面模組——UI(Ribbon,Feign) 468
12.3.7 斷路器監控——Monitor(DashBoard) . 473
12.3.8 運行 474
12.4 基於Docker部署 . 478
12.4.1 Dockerfile 編寫 478
12.4.2 Docker Compose 480
12.4.3 Docker-compose.yml 編寫 . 481
12.4.4 運行 483
附錄A 485
A.1 基於JHipster 的代碼生成 . 485
A.2 常用套用屬性配置列表 488