《瘋狂Spring Boot終極講義》不是一本介紹類似于@PathVariable、@MatrixVariable、@RequestBody、@ResponseBody這些基礎(chǔ)注解的圖書,它是真正講解Spring Boot的圖書。Spring Boot的核心是什么?它的核心就是自動配置,以及以自動配置為基礎(chǔ)與大量第三方后端技術(shù)進(jìn)行整合。因此學(xué)習(xí)Spring Boot應(yīng)該重點關(guān)注的就是它為整合各種框架所提供的自動配置,包括Spring Boot如何整合各種前端框架,如Spring MVC、Spring WebFlux;Spring Boot如何整合各種持久層技術(shù),如Spring Data、MyBatis、Hibernate/JPA、R2DBC、jOOQ等;Spring Boot如何整合NoSQL技術(shù),如Redis、MongoDB、Neo4j、Cassandra、Solr、Elasticsearch等;Spring Boot如何整合各種消息組件,如ActiveMQ、Artemis、RabbitMQ、Kafka等;Spring Boot如何整合各種緩存機(jī)制,如JCache、EhCache、Redis、Hazelcast等;Spring Boot如何整合各種安全框架,如Spring Security、Shiro等,這些都只是Spring Boot整合的典型內(nèi)容。本書的作用就是帶你徹底掌握Spring Boot官方手冊中所整合的各種技術(shù),而且本書會講清楚Spring Boot和Spring框架的關(guān)系,帶著你揭開Spring Boot的核心:自動配置的面紗,領(lǐng)著你剖析Spring Boot自動配置的源代碼實現(xiàn),然后以此為基礎(chǔ),詳細(xì)講解Spring Boot如何整合各種Java后端技術(shù)。在掌握了本書知識之后,你不僅能輕松看懂Spring Boot官方手冊(其實無須再看了),而且真正掌握了Spring Boot的大成,并通過Spring Boot的整合觸類旁通地掌握各種Java后端技術(shù)。本書提供了讀者答疑交流群,讀者可通過掃描本書封面上的二維碼,按照指引加入讀者答疑交流群。
《瘋狂Spring Boot終極講義》科技圖書大IP 瘋狂Java李剛新作
剖析Spring Boot自動配置的源代碼實現(xiàn),學(xué)會開發(fā)自己的自動配置和Starter組件
贈150分鐘Spring Boot學(xué)習(xí)視頻及本書配套代碼
橫跨七大整合方向·完整高并發(fā)秒殺系統(tǒng)
- 前端方面,Spring Boot和Spring MVC、Spring WebFlux的整合
- 后端方面,Spring Boot和MyBatis、R2DBC、JPA和JOOtQ等主流持久化技術(shù)的整合
- NoSQL方面,與Redis、MongoDB、Neo4j數(shù)據(jù)庫的用法及整合
- 全文檢索方面,與Solr、ElasticSearch的功能、用法及整合
- 緩存機(jī)制方面,JCache、EhCache、Redis等各種主流緩存框架的用法,及如何在Spring Boot應(yīng)用中如何利用這些框架提高高并發(fā)處理能力
- 消息機(jī)制方面,ActiveMQ、Artemis、RabbitMQ、Kafka的功能及用法,及在Spring Boot應(yīng)用中與這些消息組件的整合,例如在高并發(fā)場景中瞬時高并發(fā)的削峰
- 應(yīng)用部署方面,K8s、Docker的功能及用法,并監(jiān)控Spring Boot應(yīng)用的運行
- 高并發(fā)秒殺系統(tǒng)案例
李剛,十余年軟件開發(fā)從業(yè)經(jīng)驗,瘋狂Java實訓(xùn)營創(chuàng)始人,瘋狂Java體系原創(chuàng)圖書作者。CSDN爆款課程講師。培訓(xùn)的學(xué)生已在騰訊、阿里、華為等名企就職。國內(nèi)知名高端IT技術(shù)圖書作家,已出版《瘋狂Java講義》《瘋狂Python講義》《瘋狂Android講義》《輕量級Java Web企業(yè)應(yīng)用實戰(zhàn)》《瘋狂HTML5/CSS3/JavaScript講義》等著作。瘋狂Java體系圖書均已沉淀多年,多部著作印刷數(shù)量超過10萬冊,并被多所985211院校選作教材,部分圖書已被轉(zhuǎn)換成繁體中文版,授權(quán)到寶島臺灣。
第1章 序幕:Spring Boot入門 1
1.1 Spring Boot簡介 2
1.1.1 Java EE應(yīng)用與Spring 2
1.1.2 為什么要用Spring Boot 3
1.2 個Spring Boot應(yīng)用 3
1.2.1 準(zhǔn)備開發(fā)環(huán)境 3
1.2.2 創(chuàng)建Spring Boot項目 5
1.2.3 編寫控制器 9
1.2.4 運行應(yīng)用 12
1.2.5 創(chuàng)建可執(zhí)行的JAR包 18
1.2.6 開發(fā)業(yè)務(wù)組件 20
1.2.7 開發(fā)DAO組件 24
1.3 編寫單元測試 27
1.3.1 測試RESTful接口 27
1.3.2 模擬Web環(huán)境測試控制器 28
1.3.3 測試業(yè)務(wù)組件 30
1.3.4 使用模擬組件 31
1.4 使用其他構(gòu)建工具 32
1.4.1 使用Gradle構(gòu)建工具 32
1.4.2 使用Ant開發(fā)Spring Boot應(yīng)用 35
1.5 本章小結(jié) 38
第2章 應(yīng)用配置與自動配置 39
2.1 SpringApplication與Spring容器 40
2.1.1 類配置與XML配置 40
2.1.2 啟動日志和失敗分析器 43
2.1.3 延遲初始化 44
2.1.4 自定義Banner 45
2.1.5 設(shè)置SpringApplication與流式API 47
2.1.6 事件監(jiān)聽器與容器初始化器 48
2.1.7 配置環(huán)境后處理器 50
2.1.8 ApplicationRunner和CommandLineRunner 53
2.1.9 創(chuàng)建非Web應(yīng)用 55
2.1.10 通過ApplicationArguments訪問應(yīng)用參數(shù) 56
2.2 外部配置源 57
2.2.1 配置源的加載順序與優(yōu)先級 57
2.2.2 利用JSON參數(shù)配置 59
2.2.3 使用YAML配置文件 60
2.2.4 改變配置文件的位置 64
2.2.5 導(dǎo)入額外的配置文件 67
2.2.6 使用占位符 68
2.2.7 讀取構(gòu)建文件的屬性 69
2.2.8 配置隨機(jī)值 70
2.3 類型安全的綁定 71
2.3.1 使用屬性處理類獲取配置屬性 72
2.3.2 為容器中的Bean注入配置屬性 75
2.3.3 屬性轉(zhuǎn)換 78
2.3.4 校驗@ConfigurationProperties 79
2.4 Profile 81
2.4.1 配置和切換Profile 81
2.4.2 添加活動Profile 84
2.4.3 Profile組 85
2.4.4 混合復(fù)合類型 86
2.4.5 根據(jù)環(huán)境自動更新Profile 89
2.5 日志配置 90
2.5.1 理解Spring Boot的日志設(shè)計 91
2.5.2 日志級別與格式 92
2.5.3 輸出日志到文件 97
2.5.4 日志組 100
2.5.5 關(guān)閉控制臺日志 100
2.5.6 改用Log4j2日志實現(xiàn) 103
2.5.7 Logback擴(kuò)展 104
2.6 自動配置概述 106
2.6.1 自動配置的替換原則 106
2.6.2 禁用特定的自動配置 107
2.7 創(chuàng)建自己的自動配置 107
2.7.1 自動配置的本質(zhì) 108
2.7.2 條件注解 113
2.7.3 自定義條件注解 119
2.7.4 自定義自動配置 121
2.7.5 創(chuàng)建自定義的Starter 126
2.8 熱插拔與開發(fā)者工具 128
2.8.1 靜態(tài)模板的重加載 128
2.8.2 添加開發(fā)者工具 129
2.8.3 自動重啟功能 131
2.8.4 實時重加載 134
2.8.5 全局配置 135
2.9 本章小結(jié) 136
第3章 Spring Boot的Web應(yīng)用支持 137
3.1 Web應(yīng)用配置 138
3.1.1 設(shè)置HTTP端口 138
3.1.2 使用隨機(jī)的HTTP端口 138
3.1.3 運行時獲取HTTP端口 138
3.1.4 啟用HTTP響應(yīng)壓縮 141
3.1.5 Web服務(wù)器的編程式配置 141
3.2 為應(yīng)用添加Servlet、Filter、Listener 144
3.2.1 使用Spring Bean添加Servlet、Filter或Listener 144
3.2.2 使用XxxRegistrationBean注冊Servlet、Filter或Listener 147
3.2.3 使用ClassPath掃描添加Servlet、Filter或Listener 148
3.2.4 JSP限制 150
3.3 配置內(nèi)嵌Web服務(wù)器 150
3.3.1 切換到其他Web服務(wù)器 150
3.3.2 配置SSL 152
3.3.3 配置HTTP/2 154
3.3.4 配置訪客日志 156
3.4 管理Spring MVC 157
3.4.1 Spring MVC的自動配置 157
3.4.2 靜態(tài)資源管理 158
3.4.3 自定義首頁和圖標(biāo) 164
3.4.4 使用Thymeleaf模板引擎 165
3.4.5 Thymeleaf的基本語法 168
3.4.6 Spring Boot整合Thymeleaf 170
3.4.7 Spring Boot整合FreeMarker 174
3.4.8 Spring Boot整合JSP 178
3.4.9 路徑匹配和內(nèi)容協(xié)商 183
3.4.10 錯誤處理 184
3.4.11 文件上傳和輸入校驗 188
3.5 國際化支持 193
3.5.1 應(yīng)用國際化 194
3.5.2 在界面上動態(tài)改變語言 197
3.6 管理Spring WebFlux框架 199
3.6.1 Spring WebFlux簡介 199
3.6.2 Spring WebFlux的自動配置 201
3.6.3 靜態(tài)資源和首頁、圖標(biāo) 201
3.6.4 使用注解開發(fā)Spring WebFlux應(yīng)用 203
3.6.5 函數(shù)式開發(fā)WebFlux應(yīng)用及整合模板引擎 208
3.6.6 錯誤處理 213
3.7 WebSocket支持 215
3.7.1 使用@ServerEndpoint開發(fā)WebSocket 215
3.7.2 使用WebFlux開發(fā)WebSocket 218
3.8 優(yōu)雅地關(guān)閉應(yīng)用 222
3.9 本章小結(jié) 222
第4章 RESTful服務(wù)支持 224
4.1 開發(fā)RESTful服務(wù) 225
4.1.1 基于JSON的RESTful服務(wù) 225
4.1.2 基于XML的RESTful服務(wù) 226
4.1.3 Spring Boot內(nèi)置的JSON支持 229
4.2 RESTful服務(wù)的相關(guān)配置 232
4.2.1 自定義Jackson的ObjectMapper 232
4.2.2 自定義JSON序列化器和反序列化器 233
4.2.3 使用HttpMessageConverters更換轉(zhuǎn)換器 237
4.2.4 跨域資源共享 239
4.3 RESTful客戶端 241
4.3.1 使用RestTemplate調(diào)用RESTful服務(wù) 242
4.3.2 定制RestTemplate 247
4.3.3 使用WebClient調(diào)用RESTful服務(wù) 249
4.3.4 WebClient底層的相關(guān)配置 252
4.4 本章小結(jié) 253
第5章 訪問SQL數(shù)據(jù)庫 254
5.1 整合Spring Data JPA 255
5.1.1 Spring Data的設(shè)計和核心API 255
5.1.2 Spring Data JPA基本功能 258
5.1.3 數(shù)據(jù)源配置詳解 262
5.1.4 方法名關(guān)鍵字查詢 267
5.1.5 指定查詢語句和命名查詢 273
5.1.6 自定義查詢 278
5.1.7 Example查詢 281
5.1.8 Specification查詢 285
5.2 直接整合JDBC 288
5.3 整合Spring Data JDBC 294
5.4 整合MyBatis 299
5.4.1 掃描Mapper組件 299
5.4.2 直接使用SqlSession 303
5.4.3 配置MyBatis 305
5.4.4 擴(kuò)展MyBatis 307
5.5 整合jOOQ 307
5.5.1 生成代碼 307
5.5.2 使用DSLContext操作數(shù)據(jù)庫 310
5.5.3 jOOQ高級配置 322
5.6 整合R2DBC 322
5.6.1 使用DatabaseClient 323
5.6.2 使用R2DBC的Repository 324
5.7 使用JTA管理分布式事務(wù) 329
5.7.1 理解JTA分布式事務(wù) 329
5.7.2 使用Atomikos管理MyBatis多數(shù)據(jù)源應(yīng)用 331
5.7.3 使用Atomikos管理Spring Data JPA多數(shù)據(jù)源應(yīng)用 339
5.7.4 使用Java EE容器提供的事務(wù)管理器 345
5.8 初始化數(shù)據(jù)庫 346
5.8.1 基于Spring Data JPA的自動建表 346
5.8.2 執(zhí)行SQL腳本初始化數(shù)據(jù)庫 347
5.8.3 使用R2DBC初始化數(shù)據(jù)庫 349
5.9 本章小結(jié) 350
第6章 操作NoSQL數(shù)據(jù)庫 352
6.1 整合Redis 353
6.1.1 Redis源代碼編譯、安裝與配置 353
6.1.2 使用Redis 355
6.1.3 連接相關(guān)命令 357
6.1.4 key相關(guān)命令 358
6.1.5 String相關(guān)命令 359
6.1.6 List相關(guān)命令 360
6.1.7 Set相關(guān)命令 362
6.1.8 ZSet相關(guān)命令 363
6.1.9 Hash相關(guān)命令 366
6.1.10 事務(wù)相關(guān)命令 368
6.1.11 發(fā)布/訂閱相關(guān)命令 369
6.1.12 Lettuce用法簡介 370
6.1.13 使用RedisTemplate操作Redis 380
6.1.14 使用Spring Data Redis 382
6.1.15 連接多個Redis服務(wù)器 390
6.2 整合MongoDB 390
6.2.1 下載和安裝MongoDB 390
6.2.2 MongoDB副本集配置 392
6.2.3 MongoDB安全配置 393
6.2.4 MongoDB用法簡介 397
6.2.5 連接MongoDB與MongoTemplate 407
6.2.6 使用MongoDB的Repository 409
6.2.7 連接多個MongoDB服務(wù)器 418
6.3 整合Neo4j 419
6.3.1 理解圖形數(shù)據(jù)庫 419
6.3.2 下載和安裝Neo4j 423
6.3.3 配置Neo4j 425
6.3.4 CQL概述 427
6.3.5 使用CREATE創(chuàng)建節(jié)點 428
6.3.6 使用MATCH查詢節(jié)點、屬性 431
6.3.7 使用CREATE創(chuàng)建關(guān)系 437
6.3.8 使用MATCH查詢關(guān)系 440
6.3.9 使用DELETE刪除節(jié)點或關(guān)系 442
6.3.10 使用REMOVE刪除屬性或標(biāo)簽 444
6.3.11 使用SET添加、更新屬性或添加標(biāo)簽 445
6.3.12 使用UNION和UNION ALL計算并集 446
6.3.13 操作索引 448
6.3.14 操作約束 450
6.3.15 使用FOREACH、UNWIND處理列表 451
6.3.16 連接Neo4j與Neo4jTemplate 453
6.3.17 使用Neo4j的Repository 455
6.3.18 連接多個Neo4j服務(wù)器 465
6.4 整合Cassandra 466
6.4.1 Cassandra數(shù)據(jù)模型 466
6.4.2 Cassandra存儲引擎 469
6.4.3 下載和安裝Cassandra 470
6.4.4 配置Cassandra 472
6.4.5 管理keyspace 473
6.4.6 管理表 475
6.4.7 CQL的DML 478
6.4.8 集合類型與用戶定義類型 481
6.4.9 索引操作及索引列查詢 487
6.4.10 連接Cassandra與CassandraTemplate 488
6.4.11 使用Cassandra的Repository 491
6.4.12 連接多個Cassandra服務(wù)器 500
6.5 整合Solr 500
6.5.1 LIKE模糊查詢與全文檢索 500
6.5.2 反向索引庫與Lucene 501
6.5.3 下載和安裝Solr 502
6.5.4 管理Solr的Core 506
6.5.5 使用SolrClient連接Solr 513