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提高系統性能。
1.內容豐富,涵蓋Spring Boot框架、Spring MVC、視圖技術、數據庫訪問技術,并且介紹多環境部署、自動裝配、單元測試等高級特性,包括使用Spring實現RESTful架構,在Spring Boot框架下使用Redis、MongoDB、ZooKeeper、Elasticsearch等流行技術,使用Spring Session實現系統水平擴展,使用Spring Cache提高系統性能。
2.面對系統模塊增加,性能和吞吐量要求增加等場景時,介紹如何平滑地用Spring Boot實現分布式架構。
李家智,出生在貴州,畢業于成都西南民族大學。現在就職于東方金科公司,擔任架構師,負責公司技術產品研發。從事軟件開發近20年,致力于Java和Java EE系統的架構和實現,對一切技術充滿好奇,以知行合一要求自己。除了本書,也是國內流行開源Beetl模板語言和Dao工具BeetlSQL的作者。
第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 自定義監控