摘要:第10章~第19章主要介紹Spring集成其他熱門技術,例如:Log4j2日誌框架、Spring MVC、 MyBatis、 Redis緩存、ZooKeeper、 Kafka消息中間件、Mycat分庫分表中間件、Sharding-JDBC和Dubbo服務治理框架。本書第1章~第3章主要講解如何搭建Spring開發環境以及Spring IOC和AOP容器的原理及代碼分析。

最近挖掘出來的好書,黃文毅,第二版了

周冠亞 黃文毅 著

購書:

京東網

噹噹網

天貓網

內 容 簡 介

Spring框架是爲了降低解決企業系統開發的複雜度而產生的,掌握並學會使用Spring框架進行項目開發,是Java開發人員必備技能之一。本書第1章~第3章主要講解如何搭建Spring開發環境以及Spring IOC和AOP容器的原理及代碼分析。第4章和第5章概述Spring 5和Java 8的新特性。第6章和第7章講解Spring 5新特性——WebFlux響應式編程、開發和調試。第8章和第9章主要講解Spring 5.0集成Kotlin語言以及更多Spring 5新特性的細節。第10章~第19章主要介紹Spring集成其他熱門技術,例如:Log4j2日誌框架、Spring MVC、 MyBatis、 Redis緩存、ZooKeeper、 Kafka消息中間件、Mycat分庫分表中間件、Sharding-JDBC和Dubbo服務治理框架。附錄部分介紹本書涉及到的以及在面試中常見的設計模式。

本書適用於所有Java編程語言開發人員、分佈式系統開發愛好者以及計算機專業的學生等。

大咖推薦語

從基礎再到深入淺出,用極其簡單的例子詳解了Spring的每個知識點,更重要的是每一個知識點都有極其詳細生動的例子搭配講解,特別是Spring AOP業務和系統功能分離的思想看到之後原來都可以這麼簡單;所以非常推薦此書給大家。

——前蘇寧易購系統架構師 JackLiu

這是一本獲取Spring 5知識和經驗的必備圖書。本書通過理論和實際應用相結合的方式對Spring的核心知識點進行深入剖析,同時也介紹了Spring 5的新特性。在閱讀完本書後,可以讓讀者更好地理解Spring的實現原理和底層架構,能夠使用Spring的強大功能至上而下地構建複雜的Spring應用程序。感謝作者花了大量時間和精力創造了一本Spring領域的百科全書。

——驢媽媽旅遊網資深研發工程師 鄧賢文

本書很好地講述了Spirng 5在實際開發應用場景中的各種重要核心技術和最新實用技術,深入淺出地論述了每個技術的應用場景,解釋深入,通俗易懂。不僅僅適合入門者系統地學習Spring技術,也適合有一定工作經驗的人來加強和深入對Spring的理解,是一本質量很高的Spring技術圖書。

——中泰證券股份有限公司科技研發部技術經理 王祥來

僅從書的目錄來看,本書實戰型比較強,通過具體地、常用的實戰例子,引導、激發大家學習Spring的熱情,相信這將會是一本不錯的Spring 5參考書。

——美圖技術專家,導師 阮龍生

本書由淺入深地講解Spring 5,作者成功地將複雜的理論以很容易理解的方式解釋出來。同時本書指導讀者如何在實際工作中運用這些方法,有助於讀者結合實踐去閱讀理解源碼。雖然關於Spring 5的圖書很多,但是本書是難得一見的佳作。

——中國電信號百商旅電子商務有限公司項目經理 劉俊

如果你想在項目中熟練使用Spring或者想深入瞭解Spring的工作原理,這本書就是你想要的!本書從基礎出發,由淺入深、循序漸進地闡述Spring的重點(IoC/Aop),並且擴展整合了很多在實際應用場景中常用的技術,構成了一套完整的項目框架體系,是一本非常實用的Spring著作。

——上海卓贊教育科技有限公司(DaDa英語)資深研發工程師 宋庭勇

從書的目錄來看,內容豐富,由淺及深,相信這會是一本不錯的Spring 5參考書。

——瑞幸咖啡測試經理 陳茂川

凌晨已至,腦子卻還在飛速運轉,距離翻開此書已不知不覺過了三個小時。書中內容由淺入深,簡明扼要,如果你是第一次接觸Spring,這本書勢必成爲你的啓蒙老師。

——美團高級前端研發工程師 張奇雄

自從Rod在2003年創建Spring框架開始,一路藉助於完整的生態體系建設和與時俱進的自我革新,Spring已經成爲Java應用研發框架的事實標準,多年來在各個行業信息化建設中表現優異。本書完整的銜接了理論與工程實踐,不單對Spring最新相關特性做了全面闡述,同時也覆蓋了Spring與各種主流中間件及框架結合的最佳實踐。對於一線研發人員而言,相信本書可以幫助你做出睿智的決策。

——同程藝龍智慧交通技術負責人 楊繼龍

Spring框架作爲企業級別常用的成熟框架,已作爲主流在市場上應用和實踐多年,本書不單詳解了Spring相關的基礎內容,更是在Spring 5上有非常系統化地講解。本書不僅對初學者有很好的指導作用,對於有相關開發經驗的工程師來說,本書也是不可多得的Spring佳作,能爲有經驗的工程師的技術決策起到積極作用,值得推薦給大家!

——陸金所服務器端高級研發工程師 周雅君

周冠亞老師對技術有着異常執着的熱情,多年的一線互聯網大廠工作經歷,也讓周老師練就了一身不凡的本領。本書是周老師的得意之作,是對Spring相關技術鑽研的個人心得和成果,也是對多年Spring項目實戰經驗的總結和分享。該書從Spring項目實戰到源碼分析,再到原理講解,深入淺出地從多個角度解讀Spring,能夠幫助技術人員快速瞭解、掌握甚至深入Spring,是一本不可多得的佳作。

——雲析學院創始人,Java架構師,金牌講師 趙新

作者把自己的多年的開發經驗總結付梓,從實際應用的角度出發系統地將Spring的核心概念、高級特性、系統集成整合到一起,引領讀者輕鬆踏上Spring企業開發的旅途,易懂易學,用處很大。

——《從Lucene到Elasticsearch全文檢索實戰》一書作者 姚攀

Spring作爲一個互聯網公司的必備框架,由Rod Johnson創建。它是爲了解決企業應用開發的複雜性而創建的,爲應用提供一站式(one-stopshop)的解決方案。Spring的發展日新月異,已經進化到了5.0的階段,本書除了透徹地介紹了Spring標準的模塊之外,把5.0的新特徵很翔實的展示給了讀者,實例也很精煉,此外,Spring和其他模塊集成的快速體驗也實戰化,給讀者能快速地實戰落地提供了良好的指導。

——網易資深開發工程師 震升

目 錄

第一篇 Spring基礎篇

第1章 環境搭建3

1.1 Spring介紹3

1.1.1 Spring設計目標3

1.1.2 Spring各個子模塊3

1.1.3 Spring使用場景4

1.1.4 Spring與Spring MVC的關係5

1.1.5 Spring 5.0 高級特性5

1.2 環境準備5

1.2.1 安裝JDK5

1.2.2 安裝IntelliJ IDEA6

1.2.3 安裝Apache Maven6

1.2.4 安裝Apache Tomcat7

1.3 快速搭建Spring 5.0項目8

1.3.1 使用IntelliJ IDEA創建Spring 5 + Spring MVC項目8

1.3.2 測試部署9

1.4 小結9

第2章 Spring IoC容器原理10

2.1 IoC容器揭祕10

2.1.1 IoC的概念10

2.1.2 依賴倒置原則11

2.1.3 依賴注入16

2.2 Spring IoC的實現方式17

2.2.1 XML方式實現17

2.2.2 通過註解方式實現20

2.3 Spring IoC實現原理解析21

2.3.1 BeanFactory代碼解析21

2.3.2 ApplicationContext代碼解析22

2.3.3 BeanDefinition代碼解析23

2.3.4 Spring IoC代碼分析23

2.4 Spring IoC容器中Bean的生命週期44

2.5 小結52

第3章 Spring AOP揭祕53

3.1 AOP前置知識53

3.1.1 JDK動態代理53

3.1.2 CGLIB動態代理56

3.1.3 AOP聯盟58

3.2 AOP概述58

3.2.1 AOP基本概念58

3.2.2 Spring AOP相關概念59

3.3 Spring AOP實現60

3.3.1 基於JDK動態代理實現60

3.3.2 基於CGLIB動態代理實現65

3.4 基於Spring AOP的實戰70

3.4.1 增強類型70

3.4.2 前置增強71

3.4.3 後置增強73

3.4.4 環繞增強74

3.4.5 異常拋出增強75

3.4.6 引介增強75

3.4.7 切入點類型77

3.5 基於AspectJ AOP的實戰78

3.5.1 使用AspectJ方式實現AOP78

3.5.2 AspectJ各種切點指示器81

3.5.3 args()與"@args()"81

3.5.4 @annotation()87

3.5.5 execution89

3.5.6 target()與"@target()"90

3.5.7 this()92

3.5.8 within()與"@within()"95

3.6 Spring AOP的實現原理98

3.6.1 設計原理99

3.6.2 JdkDynamicAopProxy106

3.6.3 CglibAopProxy110

3.7 小結115

第二篇 Spring 5.0新特性篇

第4章 Spring 5.0新特性概述119

4.1 Spring 5.0新特性119

4.1.1 運行環境119

4.1.2 刪除的代碼120

4.1.3 核心修改120

4.1.4 核心容器更新120

4.1.5 Spring Web MVC更新120

4.1.6 Spring WebFlux121

4.1.7 對Kotlin的支持121

4.1.8 測試改進122

4.2 Spring 5.1新特性123

4.2.1 核心修改123

4.2.2 核心容器更新123

4.2.3 Web修改123

4.2.4 Spring Web MVC更新123

4.2.5 Spring WebFlux更新124

4.2.6 Spring Messaging更新124

4.2.7 Spring ORM更新124

4.2.8 測試更新124

第5章 Java 8新特性概述125

5.1 Lambda表達式125

5.1.1 Lambda表達式初探125

5.1.2 Lambda表達式作用域127

5.1.3 在線程中使用Lambda表達式128

5.1.4 在集合中使用Lambda表達式129

5.1.5 在Stream中使用Lambda表達式130

5.2 接口默認方法131

第6章 Spring WebFlux響應式編程135

6.1 傳統的編程模型135

6.2 響應式編程模型136

6.3 Reactor137

6.3.1 Flux與Mono137

6.3.2 subscribe()139

6.3.3 操作符(Operator)141

6.3.4 線程模型146

6.4 Spring WebFlux148

6.4.1 基於註解的WebFlux開發方式148

6.4.2 基於函數式的WebFlux開發方式149

6.5 小結154

第7章 WebClient響應式客戶端155

7.1 RestTemplate調試Spring MVC155

7.2 WebClient調試Spring WebFlux158

7.3 小結160

第8章 Spring 5.0結合Kotlin編程161

8.1 Kotlin簡介161

8.1.1 Kotlin的特性161

8.1.2 Kotlin基本數據類型163

8.1.3 Kotlin開發環境搭建163

8.1.4 在Kotlin中定義常量與變量164

8.1.5 字符串模板164

8.1.6 NULL檢查機制165

8.1.7 For循環和區間165

8.1.8 定義函數168

8.1.9 類和對象169

8.1.10 Kotlin與Java互操作171

8.2 Spring 5.0集成Kotlin172

8.3 小結174

第9章 Spring 5.0更多新特性175

9.1 Resource接口175

9.2 HTTP/2176

9.2.1 HTTP的現狀176

9.2.2 HTTP 2的新特性176

9.2.3 多路複用與長連接的區別177

9.3 Junit 5178

9.3.1 JUnit 5簡介178

9.3.2 JUnit 5快速體驗179

9.3.3 JUnit 5常用註解180

第三篇 Spring系統集成篇

第10章 Spring集成Log4j2185

10.1 Log4j2配置詳解185

10.2 Log4j2日誌級別188

10.3 Log4j2實戰演練189

第11章 在Spring中集成Spring MVC193

11.1 Spring MVC快速體驗193

11.1.1 web.xml配置193

11.1.2 創建Spring MVC的配置文件194

11.1.3 創建Spring MVC的視圖文件194

11.1.4 創建控制器195

11.1.5 測試運行195

11.2 Spring MVC視圖呈現196

11.2.1 FreeMarker視圖的實現196

11.2.2 XML視圖的實現197

11.2.3 JSON視圖的實現199

11.3 Spring MVC攔截器200

11.4 Spring MVC代碼解析202

11.5 小結229

第12章 在Spring中集成MyBatis230

12.1 Spring、Spring MVC和MyBatis集成快速體驗230

12.2 MyBatis代碼解析239

12.3 小結246

第13章 Spring事務管理247

13.1 事務的特性247

13.2 事務的隔離級別247

13.2.1 READ_UNCOMMITTED248

13.2.2 READ_COMMITTED248

13.2.3 REPEATABLE_READ249

13.2.4 SERIALIZABLE249

13.3 JDBC方式使用事務250

13.4 Spring事務管理快速體驗251

13.5 Spring事務隔離級別257

13.6 Spring事務傳播行爲258

13.7 Spring事務代碼分析258

13.8 小結266

第14章 Spring集成Redis267

14.1 Redis單節點安裝267

14.2 Redis支持的數據類型269

14.2.1 Redis String類型的使用方式269

14.2.2 Redis Hash類型的使用方式275

14.2.3 Redis List類型的使用方式277

14.2.4 Redis Set類型的使用方式280

14.2.5 Redis SortedSet類型的使用方式283

14.3 Redis持久化策略287

14.3.1 Redis RDB持久化287

14.3.2 Redis AOF持久化288

14.4 Redis主從複製模式290

14.4.1 Redis一主一從拓撲結構292

14.4.2 Redis一主多從拓撲結構292

14.4.3 Redis樹形拓撲結構293

14.4.4 Redis主從架構的缺點294

14.5 Redis哨兵模式294

14.5.1 Redis哨兵模式簡介294

14.5.2 Redis哨兵定時監控任務295

14.5.3 主觀下線和客觀下線297

14.5.4 Redis哨兵選舉領導者298

14.5.5 故障轉移298

14.5.6 Redis哨兵模式安裝部署299

14.6 Redis集羣模式305

14.6.1 Redis集羣模式數據共享306

14.6.2 Redis集羣中的主從複製306

14.6.3 Redis集羣中的一致性問題306

14.6.4 Redis集羣架構307

14.6.5 Redis集羣容錯307

14.6.6 Redis集羣環境搭建308

14.7 Spring、MyBatis和Redis集成快速體驗316

14.8 Redis緩存穿透和雪崩326

14.8.1 Redis緩存穿透326

14.8.2 Redis緩存雪崩329

14.9 小結332

第15章 在Spring中集成ZooKeeper333

15.1 ZooKeeper集羣安裝333

15.2 ZooKeeper總體架構339

15.2.1 ZooKeeper選舉機制339

15.2.2 ZooKeeper數據模型341

15.3 Spring集成ZooKeeper快速體驗345

15.4 ZooKeeper發佈訂閱349

15.4.1 NodeCache349

15.4.2 PathChildrenCache352

15.4.3 TreeCache355

15.5 ZooKeeper分佈式鎖359

15.6 小結364

第16章 Spring集成Kafka365

16.1 Kafka集羣安裝365

16.2 Kafka總體架構368

16.2.1 Kafka的功能368

16.2.2 Kafka的相關術語369

16.2.3 Topic和Partition369

16.2.4 消費組371

16.2.5 Push和Pull372

16.2.6 複製原理372

16.2.7 ISR372

16.2.8 數據可靠性保障375

16.2.9 消息發送模式375

16.2.10 消息傳輸保障376

16.3 Spring集成Kafka快速體驗376

16.4 小結380

第17章 Spring集成Mycat381

17.1 Mycat分庫分表381

17.1.1 分庫381

17.1.2 分表382

17.2 Mycat分庫分表實戰383

17.3 Spring+MyBatis+Mycat快速體驗387

17.4 小結399

第18章 Spring集成Sharding-JDBC400

18.1 Spring集成Sharding-JDBC快速體驗400

18.2 Sharding-JDBC強制路由409

18.3 Sharding-JDBC分佈式主鍵410

18.4 小結415

第19章 在Spring中集成Dubbo416

19.1 遠程過程調用協議416

19.2 在Spring集成中Dubbo快速體驗417

19.3 Dubbo代碼分析420

19.3.1 SPI420

19.3.2 Dubbo服務提供方代碼 分析426

19.3.3 Dubbo服務提供方不使用註冊中心430

19.3.4 Dubbo服務提供方使用註冊中心436

19.3.5 Dubbo服務調用方代碼分析446

19.3.6 Dubbo服務調用方服務發現447

19.3.7 Dubbo服務調用方服務發現451

19.4 小結455

第20章 附錄 設計模式456

20.1 工廠模式456

20.2 抽象工廠模式459

20.3 單例模式465

20.4 建造者模式466

20.5 原型模式471

20.6 適配器模式475

20.7 橋接模式479

20.8 標準模式480

20.9 組合模式484

20.10 裝飾器模式486

20.11 外觀模式489

20.12 享元模式492

20.13 代理模式494

20.14 責任鏈模式496

20.15 命令模式499

20.16 解釋器模式502

20.17 迭代器模式505

20.18 中介者模式507

20.19 備忘錄模式509

20.20 觀察者模式512

20.21 狀態模式514

20.22 空對象模式516

20.23 策略模式519

20.24 模板模式522

20.25 攔截過濾器模式525

相關文章