讓開發大型專案像堆疊積木一樣簡單
本書特色
Java煩 ! Spring更煩 !!
當所有Java工程師看到Python、PHP、Ruby這種輕量化語言佈建的高效快速時,深怕自己選擇了程式語言。但Spring Boot的出現,讓Java工程師重拾信心,數分鐘即建好框架,直接讀取SQL、NoSQL,充分利用ORM的特性,讓Java換上輕盈的腳步,讓你自由自在用Spring Boot完成各種大型專案。
本書最大的重點就是實戰。
透過「58 個以知識為基礎的實例 + 2 個綜合性的專案」,全面深入地說明Spring Boot 的主要技術原理和應用。
從最基本的Spring Boot安裝設定架設開始,進而搭配網頁後端開發最強大的MVC架構,使用標準的ORM說明清楚。加上實作了著名的SQL、NoSQL的大型資料庫系統,讓讀者直接忘記Java的龐大擁腫身驅,更可直接一路
延伸到Spring Cloud。
這種快速強大的開發體驗,讓讀者不只學會了工具,也可立即開發商品,成為理論及實戰都熟練的高手。
本書內容
第1 章:除說明Sping、Spring Boot 和Spring Cloud 之間的關係,還告訴我們在開發過程中如何學習、發現和解決問題,這在很多書中不曾有過。
第2、3 章:說明Java 環境的架設,以及開發工具的使用。對初學者來說,第3 章值得細心體會,可以作為入門開發工具的教學來研讀,讀者可以按照書中所示範的步驟進行實際操作。
第4 ∼ 6 章:這3 章為本書的基礎篇,對入門讀者特別適用。第4 章說明Spring Boot 的專案架設,如何使用Spring Boot 註釋進行開發,讀者可以跟著實例進行實際操作,體會註釋式程式設計與設定檔的結合使用。第5 章詳細說明Spring Boot 的MVC 模式以及原理,同時透過實例說明Thymeleaf 範本引擎,讀者可輕鬆上手。第6 章讓讀者深入地了解響應式程式設計WebFlux的開發過程,以及如何連接操作MongoDB 資料庫。
第7 ∼ 13 章:在理論說明部分讓讀者明白工作中需要的技術重點,再以實例讓深入學習,真真切切地將基礎知識和實操技能應用到工作中。第7 章剖析Spring 的兩個重要特性:AOP和IoC;第8 章說明如何使用ORM,以及其原理;第9 章說明介面的請求方法,以及介面的定義標準風格;第10 章說明Spring Security;第11 章說明Redis 以及其工作原理和使用;第12 章說明近年來使用非常廣泛的訊息中介軟體RabbitMQ;第13 章說明如何透過NoSQL 資料庫去實現Elasticsearch 和Solr 兩大搜尋架構效果,同時對搜尋引擎做詳細的說明,並透過實例實現資料的增加、刪除、修改、查詢操作。作者把他多年的工作經驗和工作中必須掌握的知識透過理論與實作相結合的方式,讓讀者可以在短時間內從一個技術「菜鳥」成長為技術「達人」。
第14、15 章:作者精心準備兩個專案實例。這兩章的知識也是在找工作時面試官常會問的問題。例如,做過幾個專案?都會什麼技術?讀者可以透過這兩章了解實際的專案並將前面的內容融會貫通。
適合讀者群 對Spring Boot有興趣的開發、測試、專案管理者,或剛入門的新手。
作者簡介:
龍中華
著名互聯網公司資深系統分析師。目前帶領3個研發團隊,負責系統的分析、設計、執行、演進以及技術團隊管理和培訓,有獨到的團隊建置和管理經驗。
對互聯網多種技術特點和發展趨勢鑽研極深,對Spring Boot、Spring Cloud和Service Mesh有深入的研究和豐富實戰經驗。
作者序
前言
寫作初衷
因為15 歲的侄兒對Web 後端開發很有興趣,於是買了十多本關於青少年程式設計的圖書給他。但是,他讀過之後感覺並不適用,純理論知識的圖書很枯燥,太實戰的又摸不著頭腦。所以,筆者想嘗試來寫一本符合自己期望的圖書,當然這是主觀願望,筆者個人也認為市面上很多圖書非常不錯,只是針對讀者群不同。
正好,在筆者熟悉的C、Python、PHP、Go 和Java 語言中,Java 的SpringBoot 架構技術就像搭積木一樣簡單、愉悅。並且,各大企業都在廣泛應用它,Java 相關的技術職位目前依然是需求量最大的。而且在十年之內,估計不會出現技術落後的情況。所以,筆者就打定主意,要寫一本閱讀輕鬆、快樂,有即時收穫感、創造性,並融入了產品思維和技術及業務思維的Spring Boot 實戰類圖書。
對大部分普通家庭的孩子來說,IT 業是一個單靠個人或團隊能力就能「最快實現人生小目標」的企業。所以,如果這本書可以幫助讀者學會SpringBoot,那筆者的寫作就是非常有意義的。
本書的價值
本書基於Spring Boot 2.X 版本,採用「基礎知識+ 實例」的形式撰寫,透過「58 個以知識為基礎的實例+2 個綜合性的專案」,全面深入地說明了Spring Boot 的主要技術原理和應用。
本書把晦澀難懂的理論透過圖文結合的方式說明,把不易了解的名詞用通俗化的文字說明,將每個抽象的基礎知識用具化的實例進行展現。這讓讀者在閱讀時既能讀懂理論和概念,也能立即學會如何使用。
本書說明了在工作中如何根據應用場景和歷史包袱進行各版本間的無縫升級、降級(公司專案相對於自己學習的版本可能存在新舊和不對應的情況,所以需要進行專案的升級或根據公司的歷史專案進行舊版本的維護)。
工欲善其事,必先利其器,本書還說明了開發工具的使用,以及一些非常實用的技能,以幫助讀者實現高效開發。
不僅如此,本書還比較說明了多種同類技術的使用和區別,讀者可以根據自己的喜好進行選擇。
下面列舉說明。
■ 開發模式:本書說明了歷史悠久,但現在依然被廣泛使用的分層應用程式開發模式MVC(Model View Controller),還說明了當下逐漸熱門的響應式開發模式WebFlux。
■ ORM(Object Relational Mapping,物件關係對映)架構:資料庫的操作是程式開發中非常重要的一塊,根據國內外使用者的習慣,本書比較說明了全球最熱門的JPA 和最流行的MyBatis。
■ 安全架構:安全架構是必備內容。本書說明了相關書籍、資料非常少也很少用,但是超級實用和好用的Spring Boot 官方安全架構SpringSecurity。同時也比較全面地說明了使用較多的Apache 安全架構Shiro。
■ 搜尋引擎:搜尋是各公司使用非常多的功能,但基本都是整合兩大搜尋架構—Elasticsearch 和Solr。所以,本書也非常詳細地說明這兩大搜尋架構的原理和實際使用方法。
■ Redis:Redis 是大規模網際網路應用必不可少的記憶體快取記憶體資料庫,所以本書也專門用一章說明了Redis 的原理、概念和實際應用。
■ RabbitMQ:RabbitMQ 是近年來使用非常廣泛的訊息中介軟體,本書深入地說明它的原理、概念和實際應用。
■ 實戰:本書以實例貫穿全書。每章都會有大大小小可以用於商業生產的實例。不僅如此,在最後兩章說明了多種技術的綜合應用,而且也都是可以用於生產專案的實例。本書的各個章節的實例都力求實用,且實現簡單、邏輯清晰,讓讀者看後能及時了解基礎知識,並實現對基礎知識的實際應用,收穫滿滿。
本書適用的讀者群
本書定位於入門、進階、實戰。所以,會照顧到有一定程式設計經驗,對程式設計有一定了解的初學者,同時也兼顧相對資深的開發人員。
以下讀者都可以輕鬆地學習本書。
■ 具有一定英文基礎的大專院校電腦相關科系的學生。
■ Java 語言初學者。
■ 在教育訓練機構學習過 Java 語言的學生。
■ 需要加強動手能力的技術人員。
■ 了解過 Java 架構,如 SSH(Struts + Spring + Hibernate)、SSM(Spring +SpringMVC + MyBatis)、JFinal、SpringMVC、Struts、Hibernate 等, 想了解新技術的開發、測試、專案管理的人員。
■ 已經熟練使用 Java EE、Java SE,想轉而使用 Spring Boot 的技術人員。
■ 使用過其他語言,如:PHP、C#、Python 的開發人員。
■ 使用過其他語言架構,如 Laravel、Yii、Thinkphp、Symfony 和 Zend,想轉而使用Java 語言的開發人員(這種類型的開發人員轉入Spring Boot尤為輕鬆)。
■ 會使用 Scala、Java、Groovy 和 Kotlin 等 JVM 語言的開發人員。
本書範例程式碼
本書所附之範例程式碼,請至本公司官網https: //deepmind.com.tw 下載,有簡體、繁體兩個版本。本書作者為中國大陸人士,讀者可至原作者github下載最新版原始程式,其網址為:https://github.com/xiuhuai/Spring-Boot-Book
特別感謝本書編輯吳宏偉對我的作品始終堅持高標準、嚴格要求,以確保高品質,獲得讀者認可。他甚至對一個多餘的空格,都能嚴格地檢查出來,更別說對英文大小寫、語法、基礎知識錯誤的謹慎檢查和修改,以及對基礎知識和實例程式的實用價值的重視程度,對本書的內容架構做了非常多的指導。
特別感謝電子工業出版社其他為本書默默奉獻的同仁,謝謝你們辛苦、嚴謹的工作。
還要特別感謝購買或是閱讀到本書的有緣讀者,很感恩有你們。因為你們的閱讀,作品才不孤獨,文字才有意義,你的讚賞或批評,都是對筆者最真誠的認可和鼓勵,因為,我深知作為技術書籍的作者,仍然有很遠的路要走,一切都可以做得更好。
最後,特別感謝東軟集團一位特別細心、嚴謹的資深高級軟體開發工程師王蕾,在本書的樣書閱讀中提供了非常多的寶貴意見。
Spring Boot 技術博大精深,由於本書篇幅有限,且本人精力和技術有限,難免會出現紕漏或基礎知識介紹不全面的情況,敬請批評與指正。聯繫作者請發E-mail 到363694485@qq.com,或加入本書討論QQ 群:755572590,或去本書的原始程式碼倉庫GitHub 提交問題,網址是:https://github.com/xiuhuai/Spring-Boot-Book
龍中華
前言
寫作初衷
因為15 歲的侄兒對Web 後端開發很有興趣,於是買了十多本關於青少年程式設計的圖書給他。但是,他讀過之後感覺並不適用,純理論知識的圖書很枯燥,太實戰的又摸不著頭腦。所以,筆者想嘗試來寫一本符合自己期望的圖書,當然這是主觀願望,筆者個人也認為市面上很多圖書非常不錯,只是針對讀者群不同。
正好,在筆者熟悉的C、Python、PHP、Go 和Java 語言中,Java 的SpringBoot 架構技術就像搭積木一樣簡單、愉悅。並且,各大企業都在廣泛應用它,Java 相關的技術職位目前依然是需求量最大的。而且在十年之內,估計不會...
目錄
推薦序
前言
[ 第一篇 ] 入門篇
01 進入Spring Boot 世界
1.1 認識Spring Boot
1.2 學習Spring Boot 的建議
02 準備開發環境
2.1 架設環境
2.2 熟悉Maven
03 使用開發工具
3.1 安裝開發工具IDEA 及外掛程式
3.2 實例1:用Spring Boot 輸出"HelloWorld"
3.3 在Eclipse 中開發Spring Boot應用程式
3.4 了解Spring 官方開發工具STS
3.5 必會的IDEA 實用技能
3.6 比較IDEA 與Eclipse
3.7 如何使用本書原始程式碼
[ 第二篇 ] 基礎篇
04 Spring Boot 基礎
4.1 了解Spring Boot
4.2 Spring Boot 的常用註釋
4.3 使用設定檔
4.4 Spring Boot 的Starter
05 分層開發Web 應用程式
5.1 應用程式分層開發模式—MVC
5.2 使用視圖技術Thymeleaf
5.3 使用控制器
5.4 了解模型
5.5 實例7:實現MVC 模式的Web應用程式
5.6 驗證資料
06 響應式程式設計
6.1 認識響應式程式設計
6.2 實例9:用註釋式開發實現Hello World
6.3 實例10:用註釋式開發實現資料的增加、刪除、修改和查詢
6.4 實例11:用響應式開發方式開發WebFlux
6.5 實例12:用WebFlux 模式操作MongoDB 資料庫,實現資料的
增加、刪除、修改和查詢功能
[ 第三篇 ] 進階篇
07 Spring Boot 進階
7.1 剖面導向程式設計
7.2 認識IoC 容器和Servlet 容器
7.3 篩檢程式與監聽器
7.4 自動設定
7.5 元註釋
7.6 例外處理
7.7 單元測試
08 用ORM 操作SQL資料庫
8.1 認識Java 的資料庫連接範本JDBCTemplate
8.2 JPA—Java 持久層API
8.3 認識JPA 的介面
8.4 JPA 的查詢方式
8.5 實例27:用JPA 開發文章管理模組
8.6 實現自動填充欄位
8.7 掌握關係對映開發
8.8 認識MyBatis—Java 資料持久層架構
8.9 實例31:用MyBatis 實現資料的增加、刪除、修改、查詢和分頁
8.10 比較JPA 與MyBatis
09 介面架構風格-- RESTful
9.1 REST—前後台間的通訊方式
9.2 設計統一的RESTful 風格的資料介面
9.3 實例32:為手機APP、PC、H5網頁提供統一風格的API
9.4 實例33:用Swagger 實現介面文件
9.5 用RestTemplate 發起請求
10 整合安全架構,實現安全認證和授權
10.1 Spring Security—Spring 的安全架構
10.2 設定Spring Security
10.3 實例36:用Spring Security 實現後台登入及許可權認證功能
10.4 許可權控制方式
10.5 認識JWT
10.6 實例39:用JWT 技術為Spring Boot的API 增加認證和授權保護
10.7 Shiro—Apache 通用安全架構
10.8 實例40:用Shiro 實現管理後台的動態許可權功能
10.9 比較Spring Security 與Shiro
11 整合Redis,實現高平行處理
11.1 認識Spring Cache
11.2 認識Redis
11.3 Redis 的資料類型
11.4 用RedisTemplate 操作Redis的5 種資料類型
11.5 實例47:用Redis 和MyBatis 完成快取資料的增加、刪除、修改、
查詢功能
11.6 實例48:用Redis 和JPA 實現快取文章和點擊量
11.7 實例49:實現分散式Session
12 整合RabbitMQ,實現系統間的資料交換
12.1 認識RabbitMQ
12.2 RabbitMQ 的基本概念
12.3 RabbitMQ 的6 種工作模式
12.4 認識AmqpTemplate 介面
12.5 在Spring Boot 中整合RabbitMQ
12.6 在Spring Boot 中實現RabbitMQ的4 種發送/ 接收模式
12.7 實例54:實現訊息佇列延遲功能
13 整合NoSQL 資料庫,實現搜尋引擎
13.1 Elasticsearch—搜尋應用伺服器
13.2 實例55:用ELK 管理Spring Boot應用程式的記錄檔
13.3 實例56:在Spring Boot 中整合Elasticsearch,實現增加、刪除、
修改、查詢文件的功能
13.4 Elasticsearch 查詢
13.5 實例57:實現產品搜尋引擎
13.6 Solr—搜尋應用伺服器
13.7 實例58:在Sping Boot 中整合Solr,實現資料的增加、刪除、
修改和查詢
13.8 比較Elasticsearch 和Solr
[ 第四篇 ] 專案實戰篇
14 開發企業級通用的後台系統
14.1 用JPA 實現實體間的對映關係
14.2 用Spring Security 實現動態授權(RBAC)功能
14.3 監控Spring Boot 應用
15 實現一個類似「京東」的電子商務商場
15.1 用Spring Security 實現會員系統
15.2 整合會員系統(Web、APP 多端、多方式註冊登入)和後台系統
15.3 實現購物系統
15.4 用Redis 實現分散式秒殺系統
15.5 用RabbitMQ 實現訂單過期取消功能
15.6 實現結算和支付功能
推薦序
前言
[ 第一篇 ] 入門篇
01 進入Spring Boot 世界
1.1 認識Spring Boot
1.2 學習Spring Boot 的建議
02 準備開發環境
2.1 架設環境
2.2 熟悉Maven
03 使用開發工具
3.1 安裝開發工具IDEA 及外掛程式
3.2 實例1:用Spring Boot 輸出"HelloWorld"
3.3 在Eclipse 中開發Spring Boot應用程式
3.4 了解Spring 官方開發工具STS
3.5 必會的IDEA 實用技能
3.6 比較IDEA 與Eclipse
3.7 如何使用本書原始程式碼
[ 第二篇 ] 基礎篇
04 Spring Boot 基礎
4.1 了解Spring Boot
4.2 Spring Boot 的常用註釋
4.3 使...