天天看點

深入實踐Spring Boot導讀

preface?前  言

spring boot作為java程式設計語言的一個全新開發架構,在國内外才剛剛興起,還未得到普及使用。相比于以往的一些開發架構,spring boot不但使用更加簡單,而且功能更加豐富,性能更加穩定而健壯。使用spring boot開發架構,不僅能提高開發速度,增強生産效率,從某種意義上,可以說是解放了程式員的勞動,而且一種新技術的使用,更能增強系統的穩定性和擴充系統的性能名額。本書就是本着提高開發效率,增強系統性能,促進新技術的普及使用這一目的而寫的。

spring boot是在spring架構基礎上建立的一個全新架構,其設計目的是簡化spring應用的搭建和開發過程,它不但具有spring的所有優秀特性,而且具有如下顯著的特點:

為spring開發提供更加簡單的使用和快速開發的技巧。

具有開箱即用的預設配置功能,能根據項目依賴自動配置。

具有功能更加強大的服務體系,包括嵌入式服務、安全、性能名額、健康檢查等。

絕對沒有代碼生成,可以不再需要xml配置,即可讓應用更加輕巧和靈活。

spring boot對于一些第三方技術的使用,提供了非常完美的整合,使你在簡單的使用中,不知不覺運用了非常進階和先進的技術。

雖然spring boot具有這麼多優秀的特性,但它使用起來并不複雜,而且非常簡單,是以不管是java程式開發初學者,還是經驗豐富的開發人員,使用spring boot都是一個理想的選擇。

spring boot發展迅速,自從2014年4月釋出了1.0.0版本,至今已經釋出了1.4.0正式版。現在,spring boot正在不同的角落中悄然興起,估計用不了多久,它将成為java開發的又一個熱潮,為衆多java開發者追捧。

本書将以一些非常切合生産實際的應用執行個體,帶你一起使用spring boot架構,開始一段愉快的快速開發和探索之旅。

關于本書

本書以豐富的執行個體,介紹了如何使用spring boot開發架構進行基礎應用和分布式應用等方面的開發,并且介紹了如何使用spring boot開發的應用搭建一個高性能的服務平台,同時還對spring boot的一些核心功能的源代碼進行了分析,進而加深對spring boot的了解。書中對從最基本的入門知識,到資料庫的使用,以及界面設計、安全設計等領域都做了詳細的介紹和探讨,并在分布式應用系統領域,以平台級應用系統的執行個體,介紹了如何建立和使用sso管理系統、分布式檔案系統,如何使用spring cloud進行雲應用方面的開發,以及如何使用docker釋出和建構高可用的分布式系統服務平台。同時,對spring boot的程式加載、自動配置、資料管理,和spring cloud的配置管理、發現服務和負載均衡服務等核心功能的源代碼做了深入剖析,這樣在認識其實作原理的基礎上,能更好地使用其相應的功能。

全書分為三個部分:第一部分(第1~5章)介紹基礎應用方面的開發,包含簡單入門知識、資料庫使用、界面設計和安全設計等内容;第二部分(第6~9章)介紹了spring boot在分布式系統開發和雲應用開發等方面的應用以及使用微服務建構高可用的服務平台;第三部分(第10~12章)對spring boot的程式加載、自動配置和資料管理的實作原理,以及spring cloud的配置管理、發現服務和負載均衡服務等實作原理進行了深入的剖析。

本書章節編排

第1章為spring boot入門,介紹開發環境的搭建和開發工具的選擇及安裝配置,并使用一個非常簡單的執行個體,說明如何輕易地使用spring boot開發架構。

第2章使用spring boot架構示範了以不同于以往的方式,以及如何輕易地使用資料庫,并實際示範使用mysql、mongodb、redis和neo4j等資料庫。

第3章使用thymeleaf模闆結合一些流行的javascript插件,介紹了使用spring boot進行界面設計的方法和技巧。

第4章對使用spring boot提高傳統關系型資料庫的性能方面做了一些探讨和嘗試,并擴充了使用jpa資源庫的功能。

第5章介紹了如何使用spring boot結合spring security進行安全設計,包括登入認證和角色管理、權限管理等内容。

第6章介紹如何使用spring security結合oauth2進行sso(single sign on)的設計,并示範如何在分布式應用系統中使用認證授權和安全管理的功能。

第7章介紹如何使用spring boot架構結合分布式檔案系統fastdfs,并使用定制方式和富文本編輯器的方式示範了使用圖檔上傳和建立本地圖檔庫的方法。

第8章介紹雲應用開發,包括配置管理、發現服務和監控服務的使用,以及如何使用動态路由和斷路器的功能,建立高可用的微服務應用。

第9章介紹如何使用docker引擎和docker-compose工具來釋出應用和管理服務,以及如何建構一個高性能的服務平台和怎樣使用docker實施負載均衡。

第10章分析了spring boot的應用程式加載和自動配置原理,以及如何以改造加載配置的方式來提高應用的性能。

第11章分析了spring boot使用資料庫的實作原理,并示範怎樣利用一些技術手段提高和擴充通路資料庫的功能。

第12章簡要分析了微服務中配置管理、發現服務和負載均衡服務的實作原理和部分核心源代碼,并使用一個執行個體說明配置管理中分布式消息的實作機制和原理。

附錄a~附錄d介紹了neo4j、mongodb、redis、rabbitmq等伺服器的安裝、配置和基本使用方法。

讀者對象

本書适于所有java程式設計語言開發人員,所有對spring boot感興趣并希望使用spring boot開發架構進行開發的人員,已經使用過spring boot架構但希望更好地使用spring boot的開發人員,以及系統設計師、架構師等設計人員。同時,本書對運維人員和dba等也具有一定的參考價值。

執行個體代碼

本書的執行個體代碼可以通過https://github.com/chenfromsz?tab=repositories檢視和下載下傳,推薦根據每章的提示使用intellij idea通過github檢出各章的執行個體工程,這樣可以保留原來工程的配置,并且能夠直接使用。

回報與勘誤

讀者如有回報意見可以通過https://github.com/chenfromsz/correct/issues發起新話題與作者進行互動,在這也可能會釋出一些勘誤資訊,以便糾正不可避免的錯誤。

緻謝

首先,非常感謝華陽信通公司,雖然本書的編寫過程大都在業餘時間完成,但是公司強大的平台給本書的執行個體提供了更加友善的分享、驗證和測試條件。同時在本書的編寫過程中,也得到了我們的開發團隊和衆多朋友的大力支援和幫助,在此表示衷心的感謝!最後感謝華章公司的楊福川和李藝,他們在本書編輯的過程中,提出了一些寶貴而有益的建議,并為本書的出版做了許多工作。

由于時間倉促和水準有限,書中難免出現一些纰漏或不正确的地方,敬請大家批評指正!

contents 目  錄

前 言

<a href="https://yq.aliyun.com/articles/83284" target="_blank">第一部分 基礎應用開發</a>

<a href="https://yq.aliyun.com/articles/83286" target="_blank">第1章 spring boot入門  </a>

<a href="https://yq.aliyun.com/articles/83289" target="_blank">1.1 配置開發環境  </a>

<a href="https://yq.aliyun.com/articles/83291" target="_blank">1.1.2 安裝interllij idea  </a>

<a href="https://yq.aliyun.com/articles/83292" target="_blank">1.1.3 安裝apache maven  </a>

<a href="https://yq.aliyun.com/articles/83294" target="_blank">1.1.4 安裝git用戶端  </a>

<a href="https://yq.aliyun.com/articles/83295" target="_blank">1.2 建立項目工程  </a>

<a href="https://yq.aliyun.com/articles/83297" target="_blank">1.2.1 使用maven建立項目 </a>

<a href="https://yq.aliyun.com/articles/83300" target="_blank">1.3 使用spring boot  </a>

<a href="https://yq.aliyun.com/articles/83202" target="_blank">1.3.1 maven依賴管理  </a>

<a href="https://yq.aliyun.com/articles/83304" target="_blank">1.3.2 一個簡單的執行個體  </a>

<a href="https://yq.aliyun.com/articles/83307" target="_blank">1.4.1 在idea環境中運作  </a>

<a href="https://yq.aliyun.com/articles/83308" target="_blank">1.4.2 将應用打包釋出  </a>

<a href="https://yq.aliyun.com/articles/83313">1.6 小結  </a>

<a href="https://yq.aliyun.com/articles/83314" target="_blank">第2章 在spring boot中使用資料庫  </a>

<a href="https://yq.aliyun.com/articles/83316" target="_blank">2.1.1 mysql依賴配置 </a>

<a href="https://yq.aliyun.com/articles/83319" target="_blank">2.1.2 實體模組化 </a>

<a href="https://yq.aliyun.com/articles/83323" target="_blank">2.1.3 實體持久化  </a>

<a href="https://yq.aliyun.com/articles/83324" target="_blank">2.1.4 mysql測試 </a>

<a href="https://yq.aliyun.com/articles/83327" target="_blank">2.2 使用redis  </a>

<a href="https://yq.aliyun.com/articles/83328" target="_blank">2.2.1 redis依賴配置 </a>

<a href="https://yq.aliyun.com/articles/83334" target="_blank">2.2.2 建立redis服務類  </a>

<a href="https://yq.aliyun.com/articles/83336" target="_blank">2.2.3 redis測試  </a>

<a href="https://yq.aliyun.com/articles/83338" target="_blank">2.3 使用mongodb </a>

<a href="https://yq.aliyun.com/articles/83339" target="_blank">2.3.1 mongodb依賴配置  </a>

<a href="https://yq.aliyun.com/articles/83348" target="_blank">2.4 使用neo4j  </a>

<a href="https://yq.aliyun.com/articles/83348" target="_blank">2.4.1 neo4j依賴配置  </a>

<a href="https://yq.aliyun.com/articles/83358" target="_blank">2.5 小結  </a>

<a href="https://yq.aliyun.com/articles/83360" target="_blank">第3章 spring boot界面設計  </a>

<a href="https://yq.aliyun.com/articles/83365" target="_blank">3.1.1 節點實體模組化 </a>

<a href="https://yq.aliyun.com/articles/83368" target="_blank">3.1.2 關系實體模組化  </a>

<a href="https://yq.aliyun.com/articles/83383" target="_blank">3.2.4 删除控制器  </a>

<a href="https://yq.aliyun.com/articles/83389" target="_blank">3.3 使用thymeleaf模闆  </a>

<a href="https://yq.aliyun.com/articles/83400" target="_blank">3.4.1 清單視圖設計  </a>

第4章 提高資料庫通路性能 

4.1 使用druid  

4.1.1 配置druid依賴  

4.1.2 關于xml配置 

4.1.3 druid資料源配置 

4.1.4 開啟監控功能  

4.2 擴充jpa功能  

4.2.1 擴充jpa接口  

4.2.2 裝配自定義的擴充接口  

4.2.3 使用擴充接口  

4.3 使用redis做緩存  

4.3.1 使用spring cache注解  

4.3.2 使用redistemplate  

4.4 web應用子產品  

4.4.1 引用資料管理子產品  

4.4.2 web應用配置  

4.5 運作與釋出  

4.6 小結  

第5章 spring boot安全設計  

5.1 依賴配置管理 

5.2 安全政策配置  

5.2.1 權限管理規則 

5.2.2 登入成功處理器  

5.2.3 防攻擊政策  

5.2.4 記住登入狀态 

5.3 登入認證設計  

5.3.1 使用者實體模組化  

5.3.2 使用者身份驗證  

5.3.3 登入界面設計  

5.3.4 驗證碼驗證  

5.4 權限管理設計  

5.4.1 權限管理配置  

5.4.2 權限管理過濾器  

5.4.3 權限配置資料總管  

5.4.4 權限管理決斷器  

5.5 根據權限設定連結  

5.6 運作與釋出  

5.6.1 系統初始化  

5.6.2 系統運作與釋出  

5.7 小結  

第二部分 分布式應用開發

第6章 spring boot sso  

6.1 子產品化設計  

6.2 登入認證子產品  

6.2.1 使用oauth2  

6.2.2 建立數字證書  

6.2.3 認證服務端配置  

6.3 安全配置子產品  

6.4 sso用戶端  

6.4.1 用戶端配置  

6.4.2 登入登出設計  

6.5 共享資源服務  

6.5.1 提供共享資源接口  

6.5.2 使用共享資源 

6.5.3 查詢登入使用者的詳細資訊  

6.6 運作與釋出

6.7 小結  

第7章 使用分布式檔案系統  

7.1 fastdfs安裝 

7.1.1 下載下傳安裝包  

7.1.2 安裝服務  

7.1.3 tracker server配置

7.1.4 storage server配置 

7.1.5 啟動服務  

7.2 fastfds用戶端  

7.2.1 用戶端配置  

7.2.2 用戶端服務類

7.3 使用定制方式上傳圖檔  

7.3.1 實體模組化  

7.3.2 上傳圖檔  

7.4 使用富文本編輯器上傳圖檔 

7.4.1 使用富文本編輯器  

7.4.2 實作檔案上傳 

7.5 使用本地檔案庫 

7.5.1 本地檔案庫模組化  

7.5.2 檔案儲存方法  

7.5.3 檔案庫管理  

7.6 運作與釋出 

7.7 小結  

第8章 雲應用開發 

8.1 使用配置管理  

8.1.1 建立配置管理伺服器  

8.1.2 使用配置管理的用戶端  

8.1.3 實作線上更新  

8.1.4 更新所有用戶端的配置  

8.2 使用發現服務 

8.2.1 建立發現伺服器 

8.2.2 使用發現服務的用戶端配置  

8.2.3 發現伺服器測試 

8.3 使用動态路由和斷路器  

8.3.1 依賴配置 

8.3.2 共享rest資源

8.3.3 通過路由通路rest資源 

8.3.4 使用斷路器功能 

8.3.5 路由器和斷路器測試  

8.4 使用監控服務 

8.4.1 建立監控伺服器  

8.4.2 監控伺服器測試 

8.5 運作與釋出 

8.6 小結 

第9章 建構高性能的服務平台  

9.1 使用docker 

9.1.1 docker安裝

9.1.2 docker常用指令 

9.1.3 使用docker釋出服務 

9.2 建立和管理一個高性能的服務體系  

9.2.1 安裝docker-compose  

9.2.2 docker-compose常用指令  

9.2.3 使用docker-compose管理服務  

9.3 使用docker的其他負載均衡實施方法  

9.3.1 使用nginx與docker建構負載均衡服務  

9.3.2 阿裡雲的負載均衡設計執行個體  

9.4 小結  

第三部分 核心技術源代碼分析

第10章 spring boot自動配置實作原理  

10.1 spring boot主程式的功能  

10.1.1 springapplication的run方法  

10.1.2 建立應用上下文  

10.1.3 自動加載  

10.2 spring boot自動配置原理  

10.2.1 自動配置的即插即用原理  

10.2.2 自動配置的約定優先原理  

10.3 提升應用的性能  

10.3.1 更改加載配置的方式  

10.3.2 将tomcat換成jetty  

10.4 性能對照測試  

10.5 小結  

第11章 spring boot資料通路實作原理  

11.1 連接配接資料源的源代碼分析  

11.1.1 資料源類型和驅動  

11.1.2 支援的資料庫種類  

11.1.3 與資料庫伺服器建立連接配接  

11.2 資料存取功能實作原理  

11.2.1 實體模組化源代碼分析  

11.2.2 持久化實作原理  

11.3 擴充資料存取的功能  

11.3.1 擴充jpa功能  

11.3.2 擴充neo4j功能  

11.4 小結  

第12章 微服務核心技術實作原理  

12.1.1 線上更新流程  

12.1.2 更新消息的分發原理  

12.2 發現服務源代碼剖析  

12.2.1 服務端的服務注冊功能  

12.2.2 用戶端注冊和提取服務清單  

12.3 負載均衡源代碼剖析  

12.4 分布式消息實作原理示範  

12.4.1 消息生産者  

12.4.2 消息消費者  

12.5 小結 

附錄a 安裝neo4j 

附錄b 安裝mongodb 

附錄c 安裝redis  

附錄d 安裝rabbitmq  

結束語