1.內容豐富,涵蓋Spring Boot框架、Spring MVC、視圖技術、數據庫訪問技術,並且介紹多環境部署、自動裝配、單元測試等高級特性,包括使用Spring實現RESTful架構,在Spring Boot框架下使用Redis、MongoDB、ZooKeeper、Elasticsearch等流行技術,使用Spring Session實現係統水平擴展,使用Spring Cache提高係統性能。
2.麵對係統模塊增加,性能和吞吐量要求增加等場景時,介紹如何平滑地用Spring Boot實現分布式架構。
Spring Boot是目前Spring技術體係中炙手可熱的框架之一,既可用於構建業務復雜的企業應用係統,也可以開發高性能和高吞吐量的互聯網應用。Spring Boot框架降低瞭Spring技術體係的使用門檻,簡化瞭Spring應用的搭建和開發過程,提供瞭流行的第三方開源技術的自動集成。本書係統介紹瞭Spring Boot 2的主要技術,側重於兩個方麵,一方麵是極速開發一個Web應用係統,詳細介紹Spring Boot框架、Spring MVC、視圖技術、數據庫訪問技術,並且介紹多環境部署、自動裝配、單元測試等高級特性;另一方麵,當係統模塊增加,性能和吞吐量要求增加時,如何平滑地用Spring Boot實現分布式架構,也會在本書後半部分介紹,包括使用Spring實現RESTful架構,在Spring Boot框架下使用Redis、MongoDB、ZooKeeper、Elasticsearch等流行技術,使用Spring Session實現係統水平擴展,使用Spring Cache提高係統性能。
李傢智,齣生在貴州,畢業於成都西南民族大學。現在就職於東方金科公司,擔任架構師,負責公司技術産品研發。從事軟件開發近20年,緻力於Java和Java EE係統的架構和實現,對一切技術充滿好奇,以知行閤一要求自己。除瞭本書,也是國內流行開源Beetl模闆語言和Dao工具BeetlSQL的作者。
作者集其近二十年來沉浸於技術架構的理論探索和實踐經驗,特彆是近年來紮根於互聯網金融機構對於開源技術架構的前沿研究實踐,方成此心血之作。全書由易及難、自淺入深,為讀者徐徐展開基於Spring Boot 2.0構建企業復雜應用的恢弘篇章。此書非常適閤作為開發人員及架構師從新手到高手、自低階至高階的重要指導書和參考書。
— 東方資産信息科技部 賀錦
如何快速適應業務的變化發展一直是每個企業IT部門都麵臨的睏擾,現在Spring Boot開發框架提供瞭新的、經過實踐驗證的技術解決方案。
本書作者,一位近二十年Java程序員和架構師,結閤他高超的技術能力和豐富的實戰經驗,給讀者精心闡述瞭 Spring Boot 2.0從初級快速構建係統到復雜的分布式係統開發的完整開發技術,本書不僅是開發人員不可多得的教科書,對非軟件企業的IT人員也有很強的參考價值。
— 東方資産信息科技部 黃友平
和傢智相識多年,他是我所認識的非職業足球運動員中球商非常高的,多年來他一直深耕於技術的第一綫,有著豐富的技術儲備,是我非常欽佩的老大哥。
我們曾經在同一傢公司的同一個項目集效力,都非常喜歡踢球,都齣瞭書,不得不說很神奇。
這本書的內容非常豐富,也是作者多年潛心鑽研的積纍,這本書和我的書有一些聯係,將Spring Boot進行瞭展開講解,既有廣度,也有深度,非常值得技術人員去學習。
—《微服務那些事兒》作者 紀曉峰
Spring Boot上手簡單、功能豐富、易於擴展,可謂目前業界快速開發、快速生産的利器;然而,它的版本演進非常迅速,中文文檔質量也參差不齊。本書由淺入深地講解瞭Spring Boot,幫助讀者係統理解Spring Boot。不僅如此,本書對2.0版本帶來的新特性亦有非常詳盡的描述,絕對值得一讀。
—《Spring Cloud與Docker微服務架構實戰》作者 周立
和傢智相識有五年瞭,因為模闆引擎技術結識。傢智是國內優秀的模闆引擎專傢,也是我認識的為數不多的Spring技術專傢,他在這兩方麵都曾帶給我不同角度的思考與印證,讓我獲益匪淺。本書是傢智二十年技術鑽研的一次厚積薄發,其中不僅從作者自身的經驗詳細講述瞭Spring Boot框架,還引入瞭作者在模闆引擎、ORM以及單元測試方麵多年研發的開源作品,是Java程序員和架構師不可多得的參考資料。
— ACTFramework作者 羅格林
十多年前,Spring顛覆瞭傳統的Java EE技術,迎來瞭Java企業級應用開發的春天,然而今天的Spring Boot卻站在Spring巨人的肩膀上,讓我們可以更高效地開發與交付。李傢智是著名開源框架Beetl的作者,他寫的《Spring Boot 2精髓:從構建小係統到架構分布式大係統》一定非常精彩。
— 特贊科技CTO 黃勇
熟知作者是從Beetl模闆引擎開始的,當時正在尋找一個易用高效的模闆引擎,Beetl幾乎滿足瞭我所有的需要。同時也十分敬佩作者在開源項目上的認真與負責。本書可以說是作者多年的心血所著,從Spring Boot的前世今生到使用擴展,都做瞭非常全麵而易懂的概括,細節上也秉承瞭作者的細緻與認真,講解清晰並語言乾練,既適閤初學者係統化學習,也適閤有經驗的工程師作為參考。
— 開源工具集Hutool作者 路小磊
從事Web開發有些年頭瞭,經過技術選型,Spring Boot走入瞭我們的視野,開箱即用,非常方便,也是目前很多大公司的選擇之一。除瞭研究源碼,如果有一本關於Spring Boot的指導書籍,既可以方便地解決開發中的問題,又可以幫助讀者掌握Spring Boot,提高生産效率。
傢智兄的這本書正是這樣不可多得的優秀資源,本書是傢智兄多年鑽研的技術積纍,書中詳細講解瞭Web開發的各個知識點,包含Web請求處理、ORM處理、Redis緩存、MongoDB、Elasticsearch、ZooKeeper、監控等方麵的知識點。相信讀者在仔細閱讀並掌握本書的知識點後,可以極大地提高自身的Web開發水平,為讀者的軟件開發事業助一臂之力!
— 上海秦蒼(買單俠)基礎架構組架構師 劉誌強
作者在Java EE體係內的多年實戰經驗使得本書的內容極具價值,書中清晰細緻地講解瞭快速構建Web應用係統的各個知識點,尤其是在後端模闆引擎和ORM兩個章節中,作者以自己的兩款成熟開源産品Beetl和BeetlSQL為切入點進行講解,剖析角度十分新穎並且有啓發性。
通過這本書可以學習到關於Spring Boot框架的核心技術,從而掌握快速構建分布式Web應用的必備知識。無論你是Spring Boot新手,還是已經使用過Spring Boot的開發者,相信都可以從這本書中受益。
— XXL-JOB係列作者 許雪裏
近兩年來,隨著微服務的興起,Spring Boot突然流行起來瞭,越來越多的公司采用這一技術,其已經成為大多數Java微服務開發者的開源框架。Spring Boot有非常顯著的特點:配置簡單,易於開發,可快速部署。本書結閤豐富的實例,從Spring Boot的快速開發Web應用入手,逐漸深入地分析Spring Boot的高級特性,再重點介紹分布式架構的應用。通過深入淺齣的闡述,讓你從單體應用到分布式、微服務都有全方位的瞭解,是不可多得的一本好書,當然我認為重要的還是作者耗費心血的開源項目Beetl和BeetlSQL。
— 《分布式數據庫架構及企業實踐——基於Mycat中間件》作者,開源中間件Mycat負責人 周繼鋒
Spring風靡多年,Spring Boot在最近幾年微服務框架浪潮下更是齣盡風頭,本書作者由淺入深地把Spring Boot 2.0各種特性闡述得淋灕盡緻,不管你是Spring Boot新手還是老司機都值得一讀。Java Web後端也好,App後颱也罷,甚至獨立後颱應用,等等,Spring Boot都是你不可或缺的高效率工具。
移動易項目團隊深深的體會就是使用瞭Spring Boot可以節省50%以上的代碼。
— 上海億琪軟件有限公司CEO,移動易開源項目負責人,華為開發者社區專傢(HDE) 褚建琪
第1章 Java EE簡介
1.1 Java EE
1.1.1 Java EE架構
1.1.2 Java EE的缺點
1.2 Spring
1.2.1 Spring IoC容器和AOP
1.2.2 Spring的缺點
1.3 Spring Boot
1.4 Hello,Spring Boot
1.4.1 創建一個Maven工程
1.4.2 增加Web支持
1.4.3 Hello Spring Boot示例
1.4.4 使用熱部署
1.4.5 添加REST支持
第2章 Spring Boot基礎
2.1 檢查Java環境與安裝Java
2.2 安裝和配置Maven
2.2.1 Maven介紹
2.2.2 安裝Maven
2.2.3 設置Maven
2.2.4 使用IDE設置Maven
2.2.5 Maven的常用命令
2.3 Spring核心技術
2.3.1 Spring的曆史
2.3.2 Spring容器介紹
2.3.3 Spring AOP介紹
第3章 MVC框架
3.1 集成MVC框架
3.1.1 引入依賴
3.1.2 Web應用目錄結構
3.1.3 Java包名結構
3.2 使用Controller
3.3 URL映射到方法
3.3.1 @RequestMapping
3.3.2 URL路徑匹配
3.3.3 HTTP method匹配
3.3.4 consumes和produces
3.3.5 params和header匹配
3.4 方法參數
3.4.1 PathVariable
3.4.2 Model&ModelAndView
3.4.3 JavaBean接受HTTP參數
3.4.4 @RequsetBody接受JSON
3.4.5 MultipartFile
3.4.6 @ModelAttribute
3.4.7 @InitBinder
3.5 驗證框架
3.5.1 JSR-303
3.5.2 MVC中使用@Validated
3.5.3 自定義校驗
3.6 WebMvcConfigurer
3.6.1 攔截器
3.6.2 跨域訪問
3.6.3 格式化
3.6.4 注冊Controller
3.7 視圖技術
3.7.1 使用Freemarker
3.7.2 使用Beetl
3.7.3 使用Jackson
3.7.4 Redirect和Forward
3.8 通用錯誤處理
3.9 @Service和@Transactional
3.9.1 聲明一個Service類
3.9.2 事務管理
3.10 curl命令
第4章 視圖技術
4.1 Beetl模闆引擎
4.1.1 安裝Beetl
4.1.2 設置定界符號和占位符
4.1.3 配置Beetl
4.1.4 groupTemplate
4.2 使用變量
4.2.1 全局變量
4.2.2 局部變量
4.2.3 共享變量
4.2.4 模闆變量
4.3 錶達式
4.3.1 計算錶達式
4.3.2 邏輯錶達式
4.4 控製語句
4.4.1 循環語句
4.4.2 條件語句
4.4.3 try catch
4.5 函數調用
4.6 格式化函數
4.7 直接調用Java
4.8 標簽函數
4.9 HTML標簽
4.10 安全輸齣
4.11 高級功能
4.11.1 配置Beetl
4.11.2 自定義函數
4.11.3 自定義格式化函數
4.11.4 自定義標簽函數
4.11.5 自定義HTML標簽
4.11.6 布局
4.11.7 AJAX局部渲染
4.12 腳本引擎
4.13 JSON技術
4.13.1 在Spring Boot中使用Jackson
4.13.2 自定義ObjectMapper
4.13.3 Jackson的三種使用方式
4.13.4 Jackson樹遍曆
4.13.5 對象綁定
4.13.6 流式操作
4.13.7 Jackson注解
4.13.8 集閤的反序列化
4.14 MVC分離開發
4.14.1 集成WebSimulate
4.14.2 模擬JSON響應
4.14.3 模擬模闆渲染
第5章 數據庫訪問
5.1 配置數據源
5.2 Spring JDBC Template
5.2.1 查詢
5.2.2 修改
5.2.3 JdbcTemplate增強
5.3 BeetlSQL介紹
5.3.1 BeetlSQL功能概覽
5.3.2 添加Maven依賴
5.3.3 配置BeetlSQL
5.3.4 SQLManager
5.3.5 使用SQL文件
5.3.6 Mapper
5.3.7 使用實體
5.4 SQLManager內置CRUD
5.4.1 內置的插入API
5.4.2 內置的更新(刪除)API
5.4.3 內置的查詢API
5.4.4 代碼生成方法
5.5 使用sqlId
5.5.1 md文件命名
5.5.2 md文件構成
5.5.3 調用sqlId
5.5.4 翻頁查詢
5.5.5 TailBean
5.5.6 ORM查詢
5.5.7 其他API
5.5.8 Mapper詳解
5.6 BeetlSQL的其他功能
5.6.1 常用函數和標簽
5.6.2 主鍵設置
5.6.3 BeetlSQL注解
5.6.4 NameConversion
5.6.5 鎖
第6章 Spring Data JPA
6.1 集成Spring Data JPA
6.1.1 集成數據源
6.1.2 配置JPA支持
6.1.3 創建Entity
6.1.4 簡化Entity
6.2 Repository
6.2.1 CrudRepository
6.2.2 PagingAndSortingRepository
6.2.3 JpaRepository
6.2.4 持久化Entity
6.2.5 Sort
6.2.6 Pageable和Page
6.2.7 基於方法名字查詢
6.2.8 @Query查詢
6.2.9 使用JPA Query
6.2.10 Example查詢
第7章 Spring Boot配置
7.1 配置Spring Boot
7.1.1 服務器配置
7.1.2 使用其他Web服務器
7.1.3 配置啓動信息
7.1.4 配置瀏覽器顯示ico
7.2 日誌配置
7.3 讀取應用配置
7.3.1 Environment
7.3.2 @Value
7.3.3 @ConfigurationProperties
7.4 Spring Boot自動裝配
7.4.1 @Configuration和@Bean
7.4.2 Bean條件裝配
7.4.3 Class條件裝配
7.4.4 Environment裝配
7.4.5 其他條件裝配
7.4.6 聯閤多個條件
7.4.7 Condition接口
7.4.8 製作Starter
第8章 部署Spring Boot應用
8.1 以jar文件運行
8.2 以war方式部署
8.3 多環境部署
8.4 @Profile注解
第9章 Testing單元測試
9.1 JUnit介紹
9.1.1 JUnit的相關概念
9.1.2 JUnit測試
9.1.3 Assert
9.1.4 Suite
9.2 Spring Boot單元測試
9.2.1 測試範圍依賴
9.2.2 Spring Boot測試腳手架
9.2.3 測試Service
9.2.4 測試MVC
9.2.5 完成MVC請求模擬
9.2.6 比較MVC的返迴結果
9.2.7 JSON比較
9.3 Mockito
9.3.1 模擬對象
9.3.2 模擬方法參數
9.3.3 模擬方法返迴值
9.4 麵嚮數據庫應用的單元測試
9.4.1 @Sql
9.4.2 XLSUnit
9.4.3 XLSUnit的基本用法
第10章 REST
10.1 REST簡介
10.1.1 REST風格的架構
10.1.2 使用“api”作為上下文
10.1.3 增加一個版本標識
10.1.4 標識資源
10.1.5 確定HTTP Method
10.1.6 確定HTTP Status
10.1.7 REST VS. WebService
10.2 Spring Boot集成REST
10.2.1 集成REST
10.2.2 @RestController
10.2.3 REST Client
10.3 Swagger UI
10.3.1 集成Swagger
10.3.2 Swagger規範
10.3.3 接口描述
10.3.4 查詢參數描述
10.3.5 URI中的參數
10.3.6 HTTP頭參數
10.3.7 錶單參數
10.3.8 文件上傳參數
10.3.9 整個請求體作為參數
10.4 模擬REST服務
第11章 MongoDB
11.1 安裝MongoDB
11.2 使用shell
11.2.1 指定數據庫
11.2.2 插入文檔
11.2.3 查詢文檔
11.2.4 更新操作
11.2.5 刪除操作
11.3 Spring Boot集成MongoDB
11.4 增刪改查
11.4.1 增加API
11.4.2 根據主鍵查詢API
11.4.3 查詢API
11.4.4 修改API
11.4.5 刪除API
11.4.6 使用MongoDatabase
11.4.7 打印日誌
第12章 Redis
12.1 安裝Redis
12.2 使用redis-cli
12.2.1 安全設置
12.2.2 基本操作
12.2.3 keys
12.2.4 Redis List
12.2.5 Redis Hash
12.2.6 Set
12.2.7 Pub/Sub
12.3 Spring Boot集成Redis
12.4 使用StringRedisTemplate
12.4.1 opsFor
12.4.2 綁定Key的操作
12.4.3 RedisConnection
12.4.4 Pub/Sub
12.5 序列化策略
12.5.1 默認序列化策略
12.5.2 自定義序列化策略
第13章 Elasticsearch
13.1 Elasticsearch介紹
13.1.1 安裝Elasticsearch
13.1.2 Elasticsearch的基本概念
13.2 使用REST訪問Elasticsearch
13.2.1 添加文檔
13.2.2 根據主鍵查詢
13.2.3 根據主鍵更新
13.2.4 根據主鍵刪除
13.2.5 搜索文檔
13.2.6 聯閤多個索引搜索
13.3 使用RestTemplate訪問ES
13.3.1 創建Book
13.3.2 使用RestTemplate獲取搜索結果
13.4 Spring Data Elastic
13.4.1 安裝Spring Data
13.4.2 編寫Entity
13.4.3 編寫Dao
13.4.4 編寫Controller
第14章 Cache
14.1 關於Cache
14.1.1 Cache的組件和概念
14.1.2 Cache的單體應用
14.1.3 使用專有的Cache服務器
14.1.4 使用一二級緩存服務器
14.2 Spring Boot Cache
14.3 注釋驅動緩存
14.3.1 @Cacheable
14.3.2 Key生成器
14.3.3 @CachePut
14.3.4 @CacheEvict
14.3.5 @Caching
14.3.6 @CacheConfig
14.4 使用Redis Cache
14.4.1 集成Redis緩存
14.4.2 禁止緩存
14.4.3 定製緩存
14.5 Redis緩存原理
14.6 實現Redis兩級緩存
14.6.1 實現TwoLevelCacheManager
14.6.2 創建RedisAndLocalCache
14.6.3 緩存同步說明
14.6.4 將代碼組閤在一起
第15章 Spring Session
15.1 水平擴展實現
15.2 Nginx的安裝和配置
15.2.1 安裝Nginx
15.2.2 配置Nginx
15.3 Spring Session
15.3.1 Spring Session介紹
15.3.2 使用Redis
15.3.3 Nginx+Redis
第16章 Spring Boot和ZooKeeper
16.1 ZooKeeper
16.1.1 ZooKeeper的數據結構
16.1.2 安裝ZooKeeper
16.1.3 ZooKeeper的基本命令
16.1.4 領導選取演示
16.1.5 分布式鎖演示
16.1.6 服務注冊演示
16.2 Spring Boot集成ZooKeeper
16.2.1 集成Curator
16.2.2 Curator API
16.3 實現分布式鎖
16.4 服務注冊
16.4.1 通過ServiceDiscovery注冊服務
16.4.2 獲取服務
16.5 領導選取
第17章 監控Spring Boot應用
17.1 安裝Acutator
17.2 HTTP跟蹤
17.3 日誌查看
17.4 綫程棧信息
17.5 內存信息
17.6 查看URL映射
17.7 查看Spring容器管理的Bean
17.8 其他監控
17.9 編寫自己的監控信息
17.9.1 編寫HealthIndicator
17.9.2 自定義監控
前言
Java的各種開發框架發展瞭很多年,影響瞭一代又一代的程序員,現在無論是程序員,還是架構師,使用這些開發框架都麵臨著兩方麵的挑戰。
一方麵是要快速開發齣係統,這就要求使用的開發框架盡量簡單,無論是新手還是老手都能快速上手,快速掌握頁麵渲染、數據庫訪問等常用技術。也要求開發框架能盡量多地集成第三方工具,以便信手拈來。最後,還希望在開發調試過程中,方便代碼更改後能快速重啓。
另外一方麵,當係統模塊增加,用戶使用量增加時,麵對這樣的挑戰,係統拆分成為新的架構,程序員和架構師當然不希望換掉已有的開發框架,希望能由小而美的係統過渡到大而強的分布式係統。
環顧當前Java開源世界中的流行技術框架,能同時勝任這項工作的微乎其微,Play和ActFramework 都是不錯的選擇,國內的Nutz和JFinal的口碑也不錯。但能同時滿足快速開發和分布式係統架構的框架,還是群眾基礎最好、功能最全、基於Spring技術的Spring Boot框架。
內容介紹
本書係統介紹瞭Spring Boot 2.0的主要技術,側重於兩個方麵,一方麵是極速開發一個Web應用係統(第1~6章,包含Spring介紹、MVC、視圖技術、數據庫訪問技術),隨後介紹瞭Spring Boot的高級特性(第7~9章),包括多環境部署、自動裝配、單元測試等技術。另外一方麵,當係統模塊增加,性能和吞吐量要求增加時,如何平滑地用Spring Boot來實現分布式架構,會在本書的第10~17章介紹。
閱讀本書的讀者,可以是Java新手,從未使用過任何Spring技術。也可以是用過Spring,但想進一步瞭解Spring Boot的開發者。如果你已經使用過Spring Boot,那麼本書也非常適閤你全麵深入瞭解Spring Boot。
希望讀者閱讀完本書後,既能輕鬆快速構建Web應用係統,也能掌握分布式係統架構的實現。
上半部分介紹Spring Boot的基礎技術。
第1章:介紹Java EE,然後指齣其缺點,引入瞭流行的Spring,同時也說明Spring經過這麼多年發展後暴露的一些缺點,從而引齣Spring Boot,並以兩個簡要例子作為說明。
第2章:對Spring Boot應用的開發環境做瞭說明,包括Java開發環境的安裝和配置,Maven的安裝和配置,設置國內倉庫鏡像,還有常用的Maven命令。本章最後介紹Spring曆史以及現有開發團隊,並介紹Spring框架的AOP和IoC兩個核心技術
第3章:介紹MVC技術,前半部分重點介紹URL映射到Controller,以及映射到Controller 方法的參數、參數類型轉化、參數驗證。後半部分簡單介紹MVC中的視圖技術Freemaker、Beetl,以及Jackson序列化技術。Beetl和Jackson將在第4章詳細介紹。
第4章:介紹筆者的開源技術Beetl後端模闆引擎,作為國內流行的模闆引擎之一,具有簡單易學、功能/性能強大、支持MVC分離開發等特點。另外一部分詳細介紹Jackson的JSON序列化技術。Jackson不僅作為Spring MVC中的JSON默認工具,也是Spring Boot分布式技術中常采用的JSON序列化技術。
第5章:介紹以SQL為中心的數據庫訪問工具BeetlSQL,這是筆者的另外一款流行Dao工具,SQL在markdown文件中管理,內置增刪改查、輕量級ORM功能、代碼生成、主從支持、跨多種數據庫等特點,適閤那些更喜歡以SQL方式訪問數據庫的開發者。
第6章:介紹以麵嚮對象為中心的數據庫訪問工具Spring Data JPA。本章由易到難,先從Spring Data提供的功能入手,介紹如何完成數據庫簡單的增刪改查功能,然後引入JPA來解決應用中不可避免的復雜SQL查詢。
第7章:介紹Spring Boot高級特性,如常用的Spring Boot的配置、日誌配置、應用配置的讀取、Spring Boot自動裝配技術和Spring Boot Starter實現。
第8章:介紹如何部署Spring Boot應用,包括可執行jar,以及通過war部署到應用服務器上。應用經常麵對多個環境,如開發、測試,還有準綫上、綫上,以及多個Demo環境,Spring Boot提供Profile來實現多環境部署。
第9章:介紹單元測試概念,以及Spring Boot下的單元測試支持,包括MVC單元測試、Mock測試,以及麵嚮數據庫應用的測試方案。
下半部分介紹與Spring Boot相關的分布式技術。
第10章:介紹RESTful風格的架構,然後介紹Spring Boot如何集成以提供REST服務,使用RestTemplate調用REST服務。本章最後也重點介紹瞭Swagger 3.0技術,以方便REST的接口的交流、開發和測試。
第11章:介紹MongoDB的安裝和使用,然後介紹Spring Boot如何集成MongoDB,同時還介紹瞭如何用MongoTemplate訪問MongoDB。
第12章:介紹Redis服務器的安裝和使用,Redis常用的數據結構和操作命令。然後介紹Spring Boot如何集成Redis,如何使用RedisTemplate來操作Redis。本章後半部分深入介紹瞭RedisTemplate提供的序列化機製。
第13章:介紹Elasticsearch的安裝和使用,Elasticsearch既具有全文搜索功能,也能像MongoDB那樣,具備NoSQL的功能。本章介紹通過REST和Spring Data兩種方式訪問Elasticsearch。
第14章:介紹Spring Boot Cache,並重點介紹Redis作為分布式緩存的實現。在此基礎上,改進瞭Redis分布式緩存,通過較少的代碼實現瞭一個具備一二級緩存的技術方案。
第15章:Spring Boot應用水平擴展,需實現無會話狀態技術,Spring Session提供瞭分布式會話管理,本章介紹瞭Nginx作為反嚮代理的內容,以及Spring Session的Redis實現及其源碼分析。
第16章:基於第15章Spring Boot應用水平擴展技術必然帶來分布式協調要求,ZooKeeper是一個廣泛使用的分布式協調器。本章介紹ZooKeeper的安裝和使用,對領導選取、分布式鎖和服務注冊三個常用功能做瞭重點描述,並在Spring Boot 應用中采用Curator來完成這三個功能。
第17章:Spring Boot提供瞭內置監控功能,使得用戶通過HTTP請求就能知曉服務器的健康狀態,如數據源是否可用、NoSQL服務是否可用、最近的HTTP訪問的內容等監控信息。本章講述瞭綫程棧、內存、在綫日誌、HTTP訪問、RequestMapping等常用監控功能。其中還講述通過dump綫程棧和內存來解決Spring Boot應用中的一些性能故障。
如何閱讀本書
筆者作為一個從事Java開發17年的程序員,這裏給新手一些誠懇的建議,用於幫助新手掌握Spring Boot 2.0。
建議按照本書每章的例子先模仿一遍,不要急於按照自己的項目要求去改,否則很容易知識掌握不牢固、不全麵。如果遇到自己暫時無法理解的知識,也建議優先記住這些知識點。
理解完書中的知識,能運行書中提供的例子(推薦手寫,或者從官網下載例子)後,可以嘗試主動製造一些錯誤。看看Spring Boot會給你什麼樣的錯誤提示,以1.4.5節例子為例,如果去掉@RequestMapping注解,或者如果寫成value="/usercredit/{id123}" 會怎麼樣,甚至將getCreditLevel改成getCreditLevelTest會有什麼後果(這個改動沒有任何影響)。通過主動製造錯誤,觀察Spring Boot應用的錯誤信息來深入學習Spring Boot。實際上,不僅僅是學習Spring Boot,這也是學習其他框架,甚至是編程語言或者其他任何編程技術的一種竅門。
本書每章都會提及Spring Boot框架的一些接口或者關鍵類,不瞭解這些類的實現細節,你仍然可以運用Spring Boot,如果想深入掌握Spring Boot,建議閱讀這些類的源代碼以瞭解這些類的職責以及如何實現職責。可以通過IDE的快捷鍵打開這些類,以Eclipse 為例,用快捷鍵Ctrl+T打開這些類去閱讀Spring源碼,還可以在這些類的方法中打上斷點,在運行本書例子的時候,查看在斷點處發生瞭什麼來幫助你理解Spring Boot。比如在第14章中使用Redis實現分布式緩存的時候,提到瞭RedisCacheManager,你可以閱讀這個類的源碼,並在關鍵的getCache方法上打上斷點,觀察如何實現Redis緩存。
如果對於這些類還是無法理解,則可以通過搜索引擎搜索這些類,總有些博客和技術文章在討論這些類的職責和實現方式。
謹慎對待互聯網搜索結果,這是因為Spring Boot 2.0技術本身較為新,發展也較快,通過互聯網搜索結果需要關注一下文章的發布日期、文章適用的版本,如果你在使用Spring Boot 2.0中遇到任何問題,也歡迎到社區進行交流,社區地址是ibeetl.com。
最後,請購買正版書籍,鼓勵作者和齣版社齣版更好的技術書籍。
緻謝
首先感謝我的妻子苗珺對我寫書的大力支持,沒有她的支持,我是不可能完成一本書的寫作的。還有我的兒子,知道我正在做一件很重要的事情的時候就不再讓我陪他聊天。
還要感謝電子工業齣版社的編輯同誌,給予我絕對的信任和支持,並對本書的齣版做瞭非常多的指導,感謝你們付齣的辛勤汗水。
最後要感謝的是公司和集團領導對我寫書的大力支持,特彆是在我需要幫助的時候委派左麗娜同事完成部分章節的編寫,沒有公司領導的支持,對於中國程序員來說,寫一本書幾乎是不可能完成的任務。
本書是我寫的第一本書,由於Spring和Spring Boot技術體係博大精深,而我技術有限,寫作過程中精力也有限,難免有紕漏,敬請讀者指正。
東方邦信金融科技有限公司 李傢智(閑大賦)
还没开始看,包装还算好没有伤到书…
评分人要成功,必要有难得的际遇,干建筑的孙叔敖遇到了楚庄王,成就了孙叔敖令尹;奴隶百里奚遇到秦穆公,成就了一代名相;流浪汉韩信遇到汉高祖,成就了一代战神。作为一名考生,昨天我也遇到了我的贵人,昨天中午,我考完第一场,热极了,路边一热心的小姐姐,一看就是爱心助考的,把我拉进她的店里,可能她怕我热吧,她帮我脱去外套,就在这时,扫黄的警察踢开了门……
评分好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书好书
评分书质量不错,物流很快,内容很详细,总体好评,京东值得信赖
评分Springboot是个好东西,一口气25本书,还是很爽的,重要的是学到东西,豆瓣上评价不错,不说了拿发票去报销了。
评分非常好!腰头踩线不错,不像有些裤子穿上老搁肉,这条穿上很舒服!好评一个!
评分书整体不错 写的比较细 适合新手入门 springboot2刚出来不久 外面资料还比较少 这本还是比较推荐的
评分还没来得及看,感觉应该还不错
评分挺不错的啦啦啦啦啦啦啦啊
本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有