百人牛牛棋牌
Spring Boot編程思想(核心篇)
  • 推薦2
  • 收藏6
  • 瀏覽828

Spring Boot編程思想(核心篇)

小馬哥(mercyblitz) (作者) 

  • 書  號:978-7-121-36039-8
  • 出版日期:2019-03-29
  • 頁  數:628
  • 開  本:16(185*235)
  • 出版狀態:上市銷售
紙質版 ¥118.00
本書是《Spring Boot 編程思想》的核心篇,開篇總覽Spring Boot核心特性,接著討論自動裝配(Auto-Configuration)與SpringApplication。全書的討論以Spring Boot為中心,議題發散至Spring技術棧、JSR及Java。希望透過全局的視角,幫助讀者了解Spring Boot變遷的歷程;經過多方的比較,幫助讀者理解Spring Boot特性的原理;整合標準的規范,幫助讀者掌握Spring Boot設計的哲學。
本書的討論范圍并不會局限在Spring Boot 或Spring Framework,會將Spring Cloud 甚至Spring Cloud Data Flow 納入參考,探討Spring Boot 在兩者中的運用。站在更宏觀的角度,在整個Java EE 的生態中,Spring 技術棧并非獨此一家,也不完全是“開山之作”,不少相關的特性可在JSR 規范和其他Java EE 實現中找到原型。換言之,Spring 技術棧可被認為是一種非常成功的“重復發明輪子”,不僅適配了JSR 實現,而且“借鑒”了他山之石,逐步實現了自身的生態系統。

本書從源碼的角度探討Spring Boot的核心特性,深入探究Spring Boot的實現原理,期待讀者掌握閱讀源碼的方法和技巧,全面提升研發能力,進軍架構師隊伍。
本書全名為《Spring Boot編程思想(核心篇)》,以Spring Boot 2.0為討論的主線,討論的范圍將涵蓋 Spring Boot 1.x的所有版本,以及所關聯的Spring Framework版本,致力于:
? 場景分析——掌握技術選型;
? 系統學習——拒絕淺嘗輒止;
? 重視規范——了解發展趨勢;
? 源碼解讀——理解設計思想;
? 實戰演練——鞏固學習成果。
內容總覽
由于本書的內容跨度廣,所以分“核心篇”“運維篇”和“Web篇”三冊分別討論Spring Boot的功能特性。“核心篇”開篇總覽Spring Boot核心特性,逐一討論Spring Boot官網所羅列之六大特性,然而其中兩點并非Spring Boot專屬,故點到為止,而將討論聚焦在其五大特性,分別為自動裝配(Auto-Configuration)、SpringApplication、外部化配置、Spring Boot Actuator和嵌入式Web容器。其中,前兩者是“核心篇”討論的議題,后兩者則是Spring Boot官方定義的Production-Ready特性,均偏向Spring Boot應用運維,因此納入“運維篇”的討論范疇。至于嵌入式Web容器,將結合傳統Java EE Servlet、Spring Web MVC和Spring 5 WebFlux的有關內容放至“Web篇”探討,具體章節安排如下。
? 核心篇
○ 總覽Spring Boot
○ 走向自動裝配
○ 理解SpringApplication
? 運維篇
○ 超越外部化配置
○ 簡化Spring應用運維體系
? Web篇
○ “漸行漸遠”的Servlet
○ 從Servlet到Web MVC
○ 從Reactive到WebFlux
○ 嵌入式Web容器
目前,“核心篇”和“運維篇”已編寫完畢,“Web篇”正在同步更新,其目錄安排可能發生變更,請讀者以最終發行版本為準。
在內容結構上,本書采用“總—分—總”的方式,首先總體介紹討論范圍,隨后深入展開細節的討論,最后予以總結。同時,為了避免先入為主的影響,本書將會針對官方文檔的描述內容提出疑問或假設,大膽地猜測其可能實現的方式,再結合實現源碼加以驗證,隨后通過示例代碼鞏固理解。在寫作手法上,本書效仿中國歷史書籍的傳統編著手法,將紀傳體和編年體予以綜合。從功能特性來看,它屬于紀傳體,如自動裝配、SpringApplication和外部化配置等。如此表述方式更容易系統地介紹Spring Boot和Spring Framework的核心特性。從特性的發展歷程來觀察,它則屬于編年體,如Spring Framework注解驅動編程模型從1.x到5.0的發展與Spring Boot自動裝配之間的關聯,以及Spring Boot 1.0到1.4的外部化配置源是怎樣利用Spring Environment抽象逐步完善的。更重要的是,在論述方式上,增加了論點、論證和論據,從而做到知其然也知其所以然。在對特性的討論中,會穿插一些補充說明。在特性討論的結尾處,將總結所論議題。
所謂“兼聽則明,偏聽則暗”,本書的討論范圍并不會局限在Spring Boot或Spring Framework,會將Spring Cloud甚至Spring Cloud Data Flow納入參考,探討Spring Boot在兩者中的運用。站在更宏觀的角度,在整個Java EE的生態中,Spring技術棧并非獨此一家,也不完全是“開山之作”,不少相關的特性可在JSR規范和其他Java EE實現中找到原型。換言之,Spring技術棧可被認為是一種非常成功的“重復發明輪子”,不僅適配了JSR實現,而且“借鑒”了他山之石,逐步實現了自身的生態系統。
總而言之,全書的討論將以Spring Boot為中心,議題發散至Spring技術棧、JSR及Java。希望讀者透過全局的視角,了解變遷的歷程;通過多方的比較,理解特性的原理;整合標準的規范,掌握設計的哲學。當您縱覽全書之后,或許會明白為什么說“Spring Boot易學難精”。因為它的核心是Spring Framework,而對后者的理解程度又取決于對JSR規范及Java的熟悉度。
配套視頻
盡管本書細致地討論了Spring Boot和Spring Framework相關特性,不過它并非快速上手教程,如果讀者具備三年以上的開發經驗,或者是資深的Spring用戶,那么閱讀起來會相對順暢。反之,如果讀者出現閱讀困難的情況,則不妨先參考官方文檔,掌握基本使用技能,或者觀看小馬哥在慕課網的免費視頻:
? Spring Boot 2.0深度實踐——初遇Spring Boot(https://www.imooc.com/learn/933);
? Spring Boot 2.0深度實踐之系列總覽(https://www.imooc.com/learn/1058)。
其中視頻“初遇Spring Boot”先介紹Spring Boot 2.0的基本特性,隨后創建第一個Spring  Boot 應用,再將其改造成多Maven模塊應用,這有助于對本書示例工程結構的理解。而“系列總覽”則是“核心篇——總覽Spring Boot”章節對應的視頻。換言之,慕課網的“Spring Boot 2.0深度實踐”系列屬于本書的配套視頻。讀者可訪問https://www.imooc.com/t/5387391或掃描下面的二維碼參與報名。

糾錯與勘誤
如果讀者在閱讀本書或練習示例的過程中發現了錯誤,請將錯誤內容提交至 https://github.com/mercyblitz/thinking-in-spring-boot-samples/issues,小馬哥將勘誤內容匯總到https://mercyblitz.github.io/books/thinking-in-spring-boot/revision/,修正后的內容將在后續發行的書籍中體現。
公益資金流向
本書五成以上的稿費將捐贈給貧困地區小朋友作為教育公益基金,讀者訪問https://mercyblitz.github.io/books/thinking-in-spring-boot/donate/來關注和監督資金流向。

目錄

第1部分 總覽Spring Boot
第1章 初覽Spring Boot 2
1.1 Spring Framework時代 2
1.2 Spring Boot簡介 3
1.3 Spring Boot的特性 5
1.4 準備運行環境 5
1.4.1 裝配JDK 8 5
1.4.2 裝配Maven 6
1.4.3 裝配IDE(集成開發環境) 8
第2章 理解獨立的Spring應用 9
2.1 創建Spring Boot應用 10
2.1.1 命令行方式創建Spring Boot應用 11
2.1.2 圖形化界面創建Spring Boot應用 21
2.1.3 創建Spring Boot應用可執行JAR 29
2.2 運行Spring Boot應用 31
2.2.1 執行Spring Boot應用可執行JAR 32
2.2.2 Spring Boot應用可執行JAR資源結構 32
2.2.3 FAT JAR和WAR執行模塊——spring-boot-loader 36
2.2.4 JarLauncher的實現原理 40
第3章 理解固化的Maven依賴 58
3.1 spring-boot-starter-parent與spring-boot-dependencies簡介 58
3.2 理解spring-boot-starter-parent與spring-boot- dependencies 61
第4章 理解嵌入式Web容器 70
4.1 嵌入式Servlet Web容器 71
4.1.1 Tomcat作為嵌入式Servlet Web容器 72
4.1.2 Jetty作為嵌入式Servlet Web容器 77
4.1.3 Undertow作為嵌入式Servlet Web容器 80
4.2 嵌入式Reactive Web容器 82
4.2.1 UndertowServletWebServer作為嵌入式Reactive Web容器 82
4.2.2 UndertowWebServer作為嵌入式Reactive Web容器 84
4.2.3 WebServerInitializedEvent 91
4.2.4 Jetty作為嵌入式Reactive Web容器 93
4.2.5 Tomcat作為嵌入式Reactive Web容器 94
第5章 理解自動裝配 96
5.1 理解@SpringBootApplication注解語義 97
5.2 @SpringBootApplication屬性別名 103
5.3 @SpringBootApplication標注非引導類 107
5.4 @EnableAutoConfiguration激活自動裝配 108
5.5 @SpringBootApplication“繼承”@Configuration CGLIB提升特性 110
5.6 理解自動配置機制 112
5.7 創建自動配置類 116
第6章 理解Production- Ready特性 119
6.1 理解Production-Ready一般性定義 120
6.2 理解Spring Boot Actuator 123
6.3 Spring Boot Actuator Endpoints 124
6.4 理解“外部化配置” 129
6.5 理解“規約大于配置” 132
6.6 小馬哥有話說 134
6.6.1 Spring Boot作為微服務中間件 134
6.6.2 Spring Boot作為Spring Cloud基礎設施 135
6.7 下一站:走向自動裝配 135
第2部分 走向自動裝配
第7章 走向注解驅動編程(Annotation-Driven) 138
7.1 注解驅動發展史 138
7.1.1 注解驅動啟蒙時代:Spring Framework 1.x 138
7.1.2 注解驅動過渡時代:Spring Framework 2.x 139
7.1.3 注解驅動黃金時代:Spring Framework 3.x 142
7.1.4 注解驅動完善時代:Spring Framework 4.x 146
7.1.5 注解驅動當下時代:Spring Framework 5.x 151
7.2 Spring核心注解場景分類 152
7.3 Spring注解編程模型 154
7.3.1 元注解(Meta-Annotations) 154
7.3.2 Spring模式注解(Stereotype Annotations) 155
7.3.3 Spring組合注解(Composed Annotations) 187
7.3.4 Spring注解屬性別名和覆蓋(Attribute Aliases and Overrides) 195
第8章 Spring注解驅動設計模式 225
8.1 Spring @Enable模塊驅動 225
8.1.1 理解@Enable模塊驅動 225
8.1.2 自定義@Enable模塊驅動 226
8.1.3 @Enable模塊驅動原理 236
8.2 Spring Web自動裝配 250
8.2.1 理解Web自動裝配 250
8.2.2 自定義Web自動裝配 254
8.2.3 Web自動裝配原理 258
8.3 Spring條件裝配 270
8.3.1 理解配置條件裝配 271
8.3.2 自定義配置條件裝配 274
8.3.3 配置條件裝配原理 277
第9章 Spring Boot自動裝配 292
9.1 理解Spring Boot自動裝配 295
9.1.1 理解@EnableAutoConfiguration 296
9.1.2 優雅地替換自動裝配 298
9.1.3 失效自動裝配 298
9.2 Spring Boot自動裝配原理 299
9.2.1 @EnableAutoConfiguration讀取候選裝配組件 301
9.2.2 @EnableAutoConfiguration排除自動裝配組件 305
9.2.3 @EnableAutoConfiguration過濾自動裝配組件 307
9.2.4 @EnableAutoConfiguration自動裝配事件 313
9.2.5 @EnableAutoConfiguration自動裝配生命周期 317
9.2.6 @EnableAutoConfiguration排序自動裝配組件 324
9.2.7 @EnableAutoConfiguration自動裝配BasePackages 332
9.3 自定義Spring Boot自動裝配 337
9.3.1 自動裝配Class命名的潛規則 338
9.3.2 自動裝配package命名的潛規則 338
9.3.3 自定義Spring Boot Starter 340
9.4 Spring Boot條件化自動裝配 346
9.4.1 Class條件注解 347
9.4.2 Bean條件注解 358
9.4.3 屬性條件注解 370
9.4.4 Resource條件注解 376
9.4.5 Web應用條件注解 391
9.4.6 Spring表達式條件注解 397
9.5 小馬哥有話說 401
9.6 下一站:理解SpringApplication 402
第3部分 理解SpringApplication
第10章 SpringApplication初始化階段 405
10.1 SpringApplication構造階段 405
10.1.1 理解SpringApplication主配置類 406
10.1.2 SpringApplication的構造過程 410
10.1.3 推斷Web應用類型 411
10.1.4 加載Spring應用上下文初始化器(ApplicationContextInitializer) 412
10.1.5 加載Spring應用事件監聽器(ApplicationListener) 415
10.1.6 推斷應用引導類 416
10.2 SpringApplication配置階段 417
10.2.1 自定義SpringApplication 417
10.2.2 調整SpringApplication設置 417
10.2.3 增加SpringApplication配置源 420
10.2.4 調整Spring Boot外部化配置 423
第11章 SpringApplication運行階段 425
11.1 SpringApplication準備階段 425
11.1.1 理解SpringApplicationRunListeners 426
11.1.2 理解SpringApplicationRunListener 428
11.1.3 理解Spring Boot事件 431
11.1.4 理解Spring事件/監聽機制 432
11.1.5 理解Spring Boot事件/監聽機制 492
11.1.6 裝配ApplicationArguments 509
11.1.7 準備ConfigurableEnvironment 512
11.1.8 創建Spring應用上下文(ConfigurableApplicationContext) 512
11.1.9 Spring應用上下文運行前準備 516
11.2 Spring應用上下文啟動階段 537
11.3 Spring應用上下文啟動后階段 539
11.3.1 afterRefresh方法簽名的變化 540
11.3.2 afterRefresh方法語義的變化 541
11.3.3 Spring Boot事件ApplicationStartedEvent語義的變化 543
11.3.4 執行CommandLineRunner和ApplicationRunner 548
第12章 SpringApplication結束階段 550
12.1 SpringApplication正常結束 550
12.2 SpringApplication異常結束 555
12.2.1 Spring Boot異常處理 556
12.2.2 錯誤分析報告器——FailureAnalysisReporter 562
12.2.3 自定義實現FailureAnalyzer和FailureAnalysisReporter 564
12.2.4 Spring Boot 2.0重構handleRunFailure和reportFailure方法 566
12.2.5 Spring Boot 2.0的SpringBootExceptionReporter接口 567
第13章 Spring Boot應用退出 571
13.1 Spring Boot應用正常退出 572
13.1.1 ExitCodeGenerator Bean生成退出碼 572
13.1.2 ExitCodeGenerator Bean退出碼使用場景 576
13.2 Spring Boot應用異常退出 580
13.2.1 ExitCodeGenerator異常使用場景 582
13.2.2 ExitCodeExceptionMapper Bean映射異常與退出碼 587
13.2.3 退出碼用于SpringApplication異常結束 589
13.3 小馬哥有話說 594
13.4 下一站:運維篇

本書勘誤

印次
  • 頁碼:178  •  行數:1  •  印次: 1

    左右兩邊版本號寫反,應該左邊是3.0.0.RELEASE 右邊是 2.5.6.SEC03

    愛吃冰淇淋 提交于 2019/6/16 22:36:33
    陳曉猛 確認于 2019/6/17 8:13:50

讀者評論

相關博文

  • 小馬哥終于出手!Spring Boot綜合能力全面升級!

    小馬哥終于出手!Spring Boot綜合能力全面升級!

    管理員賬號 2019-04-08

    自從Spring Boot問世以來,就受到了廣大開發人員的極大關注,相關的學習資料也很多,但很多讀者在掌握Spring Boot的基本用法之后,在遇到實際項目的時候,很多核心問題卻難倒了讀者,比如: Spring Boot是如何基...

    管理員賬號 2019-04-08
    380 0 0 0

推薦用戶

百人牛牛棋牌