Spring Boot是目前Spring技術(shù)體系中炙手可熱的框架之一,既可用于構(gòu)建業(yè)務(wù)復(fù)雜的企業(yè)應(yīng)用系統(tǒng),也可以開發(fā)高性能和高吞吐量的互聯(lián)網(wǎng)應(yīng)用。Spring Boot框架降低了Spring技術(shù)體系的使用門檻,簡化了Spring應(yīng)用的搭建和開發(fā)過程,提供了流行的第三方開源技術(shù)的自動(dòng)集成。本書系統(tǒng)介紹了Spring Boot 2的主要技術(shù),側(cè)重于兩個(gè)方面,一方面是極速開發(fā)一個(gè)Web應(yīng)用系統(tǒng),詳細(xì)介紹Spring Boot框架、Spring MVC、視圖技術(shù)、數(shù)據(jù)庫訪問技術(shù),并且介紹多環(huán)境部署、自動(dòng)裝配、單元測試等高級特性;另一方面,當(dāng)系統(tǒng)模塊增加,性能和吞吐量要求增加時(shí),如何平滑地用Spring Boot實(shí)現(xiàn)分布式架構(gòu),也會(huì)在本書后半部分介紹,包括使用Spring實(shí)現(xiàn)RESTful架構(gòu),在Spring Boot框架下使用Redis、MongoDB、ZooKeeper、Elasticsearch等流行技術(shù),使用Spring Session實(shí)現(xiàn)系統(tǒng)水平擴(kuò)展,使用Spring Cache提高系統(tǒng)性能。
1.內(nèi)容豐富,涵蓋Spring Boot框架、Spring MVC、視圖技術(shù)、數(shù)據(jù)庫訪問技術(shù),并且介紹多環(huán)境部署、自動(dòng)裝配、單元測試等高級特性,包括使用Spring實(shí)現(xiàn)RESTful架構(gòu),在Spring Boot框架下使用Redis、MongoDB、ZooKeeper、Elasticsearch等流行技術(shù),使用Spring Session實(shí)現(xiàn)系統(tǒng)水平擴(kuò)展,使用Spring Cache提高系統(tǒng)性能。
2.面對系統(tǒng)模塊增加,性能和吞吐量要求增加等場景時(shí),介紹如何平滑地用Spring Boot實(shí)現(xiàn)分布式架構(gòu)。
李家智,出生在貴州,畢業(yè)于成都西南民族大學(xué)。現(xiàn)在就職于東方金科公司,擔(dān)任架構(gòu)師,負(fù)責(zé)公司技術(shù)產(chǎn)品研發(fā)。從事軟件開發(fā)近20年,致力于Java和Java EE系統(tǒng)的架構(gòu)和實(shí)現(xiàn),對一切技術(shù)充滿好奇,以知行合一要求自己。除了本書,也是國內(nèi)流行開源Beetl模板語言和Dao工具BeetlSQL的作者。
第1章 Java EE簡介
1.1 Java EE
1.1.1 Java EE架構(gòu)
1.1.2 Java EE的缺點(diǎn)
1.2 Spring
1.2.1 Spring IoC容器和AOP
1.2.2 Spring的缺點(diǎn)
1.3 Spring Boot
1.4 Hello,Spring Boot
1.4.1 創(chuàng)建一個(gè)Maven工程
1.4.2 增加Web支持
1.4.3 Hello Spring Boot示例
1.4.4 使用熱部署
1.4.5 添加REST支持
第2章 Spring Boot基礎(chǔ)
2.1 檢查Java環(huán)境與安裝Java
2.2 安裝和配置Maven
2.2.1 Maven介紹
2.2.2 安裝Maven
2.2.3 設(shè)置Maven
2.2.4 使用IDE設(shè)置Maven
2.2.5 Maven的常用命令
2.3 Spring核心技術(shù)
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應(yīng)用目錄結(jié)構(gòu)
3.1.3 Java包名結(jié)構(gòu)
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 方法參數(shù)
3.4.1 PathVariable
3.4.2 Model&ModelAndView
3.4.3 JavaBean接受HTTP參數(shù)
3.4.4 @RequsetBody接受JSON
3.4.5 MultipartFile
3.4.6 @ModelAttribute
3.4.7 @InitBinder
3.5 驗(yàn)證框架
3.5.1 JSR-303
3.5.2 MVC中使用@Validated
3.5.3 自定義校驗(yàn)
3.6 WebMvcConfigurer
3.6.1 攔截器
3.6.2 跨域訪問
3.6.3 格式化
3.6.4 注冊Controller
3.7 視圖技術(shù)
3.7.1 使用Freemarker
3.7.2 使用Beetl
3.7.3 使用Jackson
3.7.4 Redirect和Forward
3.8 通用錯(cuò)誤處理
3.9 @Service和@Transactional
3.9.1 聲明一個(gè)Service類
3.9.2 事務(wù)管理
3.10 curl命令
第4章 視圖技術(shù)
4.1 Beetl模板引擎
4.1.1 安裝Beetl
4.1.2 設(shè)置定界符號和占位符
4.1.3 配置Beetl
4.1.4 groupTemplate
4.2 使用變量
4.2.1 全局變量
4.2.2 局部變量
4.2.3 共享變量
4.2.4 模板變量
4.3 表達(dá)式
4.3.1 計(jì)算表達(dá)式
4.3.2 邏輯表達(dá)式
4.4 控制語句
4.4.1 循環(huán)語句
4.4.2 條件語句
4.4.3 try catch
4.5 函數(shù)調(diào)用
4.6 格式化函數(shù)
4.7 直接調(diào)用Java
4.8 標(biāo)簽函數(shù)
4.9 HTML標(biāo)簽
4.10 安全輸出
4.11 高級功能
4.11.1 配置Beetl
4.11.2 自定義函數(shù)
4.11.3 自定義格式化函數(shù)
4.11.4 自定義標(biāo)簽函數(shù)
4.11.5 自定義HTML標(biāo)簽
4.11.6 布局
4.11.7 AJAX局部渲染
4.12 腳本引擎
4.13 JSON技術(shù)
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分離開發(fā)
4.14.1 集成WebSimulate
4.14.2 模擬JSON響應(yīng)
4.14.3 模擬模板渲染
第5章 數(shù)據(jù)庫訪問
5.1 配置數(shù)據(jù)源
5.2 Spring JDBC Template
5.2.1 查詢
5.2.2 修改
5.2.3 JdbcTemplate增強(qiáng)
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 使用實(shí)體
5.4 SQLManager內(nèi)置CRUD
5.4.1 內(nèi)置的插入API
5.4.2 內(nèi)置的更新(刪除)API
5.4.3 內(nèi)置的查詢API
5.4.4 代碼生成方法
5.5 使用sqlId
5.5.1 md文件命名
5.5.2 md文件構(gòu)成
5.5.3 調(diào)用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 常用函數(shù)和標(biāo)簽
5.6.2 主鍵設(shè)置
5.6.3 BeetlSQL注解
5.6.4 NameConversion
5.6.5 鎖
第6章 Spring Data JPA
6.1 集成Spring Data JPA
6.1.1 集成數(shù)據(jù)源
6.1.2 配置JPA支持
6.1.3 創(chuàng)建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 服務(wù)器配置
7.1.2 使用其他Web服務(wù)器
7.1.3 配置啟動(dòng)信息
7.1.4 配置瀏覽器顯示ico
7.2 日志配置
7.3 讀取應(yīng)用配置
7.3.1 Environment
7.3.2 @Value
7.3.3 @ConfigurationProperties
7.4 Spring Boot自動(dòng)裝配
7.4.1 @Configuration和@Bean
7.4.2 Bean條件裝配
7.4.3 Class條件裝配
7.4.4 Environment裝配
7.4.5 其他條件裝配
7.4.6 聯(lián)合多個(gè)條件
7.4.7 Condition接口
7.4.8 制作Starter
第8章 部署Spring Boot應(yīng)用
8.1 以jar文件運(yùn)行
8.2 以war方式部署
8.3 多環(huán)境部署
8.4 @Profile注解
第9章 Testing單元測試
9.1 JUnit介紹
9.1.1 JUnit的相關(guān)概念
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的返回結(jié)果
9.2.7 JSON比較
9.3 Mockito
9.3.1 模擬對象
9.3.2 模擬方法參數(shù)
9.3.3 模擬方法返回值
9.4 面向數(shù)據(jù)庫應(yīng)用的單元測試
9.4.1 @Sql
9.4.2 XLSUnit
9.4.3 XLSUnit的基本用法
第10章 REST
10.1 REST簡介
10.1.1 REST風(fēng)格的架構(gòu)
10.1.2 使用“api”作為上下文
10.1.3 增加一個(gè)版本標(biāo)識
10.1.4 標(biāo)識資源
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規(guī)范
10.3.3 接口描述
10.3.4 查詢參數(shù)描述
10.3.5 URI中的參數(shù)
10.3.6 HTTP頭參數(shù)
10.3.7 表單參數(shù)
10.3.8 文件上傳參數(shù)
10.3.9 整個(gè)請求體作為參數(shù)
10.4 模擬REST服務(wù)
第11章 MongoDB
11.1 安裝MongoDB
11.2 使用shell
11.2.1 指定數(shù)據(jù)庫
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 根據(jù)主鍵查詢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 安全設(shè)置
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 默認(rèn)序列化策略
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 根據(jù)主鍵查詢
13.2.3 根據(jù)主鍵更新
13.2.4 根據(jù)主鍵刪除
13.2.5 搜索文檔
13.2.6 聯(lián)合多個(gè)索引搜索
13.3 使用RestTemplate訪問ES
13.3.1 創(chuàng)建Book
13.3.2 使用RestTemplate獲取搜索結(jié)果
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 關(guān)于Cache
14.1.1 Cache的組件和概念
14.1.2 Cache的單體應(yīng)用
14.1.3 使用專有的Cache服務(wù)器
14.1.4 使用一二級緩存服務(wù)器
14.2 Spring Boot Cache
14.3 注釋驅(qū)動(dòng)緩存
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 實(shí)現(xiàn)Redis兩級緩存
14.6.1 實(shí)現(xiàn)TwoLevelCacheManager
14.6.2 創(chuàng)建RedisAndLocalCache
14.6.3 緩存同步說明
14.6.4 將代碼組合在一起
第15章 Spring Session
15.1 水平擴(kuò)展實(shí)現(xiàn)
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的數(shù)據(jù)結(jié)構(gòu)
16.1.2 安裝ZooKeeper
16.1.3 ZooKeeper的基本命令
16.1.4 領(lǐng)導(dǎo)選取演示
16.1.5 分布式鎖演示
16.1.6 服務(wù)注冊演示
16.2 Spring Boot集成ZooKeeper
16.2.1 集成Curator
16.2.2 Curator API
16.3 實(shí)現(xiàn)分布式鎖
16.4 服務(wù)注冊
16.4.1 通過ServiceDiscovery注冊服務(wù)
16.4.2 獲取服務(wù)
16.5 領(lǐng)導(dǎo)選取
第17章 監(jiān)控Spring Boot應(yīng)用
17.1 安裝Acutator
17.2 HTTP跟蹤
17.3 日志查看
17.4 線程棧信息
17.5 內(nèi)存信息
17.6 查看URL映射
17.7 查看Spring容器管理的Bean
17.8 其他監(jiān)控
17.9 編寫自己的監(jiān)控信息
17.9.1 編寫HealthIndicator
17.9.2 自定義監(jiān)控