Spring Boot 實戰派

龍中華

買這商品的人也買了...

商品描述

本書針對Spring Boot 2.0以上版本,採用“知識點+實例”的形式編寫。通過“58個基於知識的實例 + 2個綜合性的項目”,深入地講解Spring Boot的技術原理、知識點和具體應用。把晦澀難懂的理論用實例展現出來,使得讀者對知識的理解變得非常容易,同時也立即學會如何使用它。要成為一本有溫度的書,只做到上面這些還遠遠不夠。所以,本書花費大量的力氣對比講解多種同類技術的知識、使用和區別,讀者可以根據自己的喜歡進行技術選型;還講解了時下流行的接口架構風格RESTFUL、用來實現高並發的Redis、用來實現系統間通信的中間件RabbitMQ。最後兩章融合了本書所講知識點,講解了兩個常用又實用的實戰項目。本書適合所有對Spring Boot感興趣的讀者閱讀。

作者簡介

龍中華,擁有10多年一線企業開發經驗。對多種技術有深入了解和研究,致力於用技術為公司業務創造利潤。曾在多家公司擔任主程序員和系統架構師,現就職於某大數據研究機構,擔任技術顧問。

目錄大綱

入門篇

第1章進入Spring Boot世界2
1.1認識Spring Boot 2
1.1.1什麼是Spring Boot 2
1.1.2 Spring、Spring Boot、Spring Cloud的關係4
1.1.3 Spring Boot的特色5
1.1.4 Spring Boot支持的開發語言6
1.1.5學習Spring Boot的前景展望6
1.2學習Spring Boot的建議7
1.2.1看透本書理論,模仿實戰例子7
1.2.2利用開發工具自動學習7
1.2.3發現新功能的方法8
1.2.4建立高階的思維方式9
1.2.5控製版本,降低犯錯的代價10
1.2.6獲取最新、最全的資料11
1.2.7學會自己發現和解決問題11
1.2.8善於提問,成功一半12


第2章準備開發環境14
2.1搭建環境14
2.1.1安裝Java開發環境JDK 14
2.1.2配置JDK的環境變量15
2.2熟悉Maven 18
2.2.1安裝及配置Maven 18
2.2.2認識其中的pom.xml文件19
2.2.3 Maven的運作方式23
2.2 .4配置國內倉庫23


第3章使用開發工具25
3.1安裝開發工具IDEA及插件25
3.1.1安裝IDEA 25
3.1.2配置IDEA的Maven環境27
3.1.3安裝Spring Assistant插件27
3.1.4安裝插件Lombok 28
3.2實例1:用Spring Boot輸出“Hello World” 30
3.2.1構建Spring Boot項目30
3.2.2編寫控制器,實現輸出功能31
3.2.3在IDEA中運行程序33
3.2.4打包成可執行的JAR包33
3.3在Eclipse中開發Spring Boot應用程序35
3.3.1安裝Eclipse 35
3.3.2安裝Spring Tools 4插件35
3.3.3配置Eclipse的Maven環境36
3.3.4創建Spring Boot項目37
3.4了解Spring官方開發工具STS 37
3.5必會的IDEA實用技能38
3.5.1智能提示代碼38
3.5.2自動提示參數39
3.5.3實現自動轉義39
3.5.4自定義高複用代碼塊40
3.5.5設置註釋信息41
3.5.6超能的“Alt+Enter”快捷鍵42
3.5.7使用全局配置42
3.5.8自動生成語句43
3.6比較IDEA與Eclipse 44
3.7如何使用本書源代碼47
3.7.1在IDEA中使用47
3.7.2在Eclipse(STS)中使用47

基礎篇

第4章Spring Boot基礎50
4.1了解Spring Boot 50
4.1.1了解Spring Boot項目結構50
4.1. 2了解Spring Boot的入口類51
4.1.3了解Spring Boot的自動配置52
4.1.4了解Spring Boot熱部署52
4.1.5實例2:定制啟動畫面53
4.2 Spring Boot的常用註解54
4.2.1什麼是註解式編程55
4.2.2了解系統註解55
4.2.3 Spring Boot的常用註解56
4.3使用配置文件61
4.3.1實例3:演示如何使用application.yml文件62
4.3.2實例4:演示如何使用application.properties文件65
4.3.3實例5:用application.yml和application.properties配置多環境67
4.4了解Spring Boot的Starter 69
4.4.1官方的Starter 69
4.4.2使用Starter 70


第5章分層開發Web應用程序71
5.1應用程序分層開發模式——MVC 71
5.1.1了解MVC模式71
5.1.2 MVC和三層架構的關係72
5.2使用視圖技術Thymeleaf 73
5.2.1認識Thymeleaf 73
5.2.2基礎語法75
5.2.3處理循環遍歷78
5.2.4處理公共代碼塊80
5.2.5處理分頁81
5.2.6驗證和提示錯誤消息82
5.2.7實例6:編寫Thymeleaf視圖以展示數據83
5.3使用控制器85
5.3.1常用註解85
5.3.2將URL映射到方法86
5.3.3處理HTTP請求方法87
5.3.4處理內容類型89
5.3.5方法中參數的使用90
5.4理解模型93
5.5實例7:實現MVC模式的Web應用程序94
5.5.1添加依賴94
5.5.2創建實體模型95
5.5.3創建控制器95
5.5.4創建用於展示的視圖96
5.6驗證數據96
5.6.1認識內置的驗證器Hibernate-validator 96
5.6.2自定義驗證功能98
5.6.3實例8:驗證表單數據並實現數據的自定義驗證99


第6章響應式編程103
6.1認識響應式編程103
6.1.1什麼是WebFlux 103
6.1.2比較MVC和WebFlux 103
6.1.3認識Mono和Flux 105
6.1.4開發WebFlux的流程106
6.2實例9:用註解式開發實現Hello World 107
6.2.1配置WebFlux依賴107
6.2.2編寫控制器107
6.3實例10:用註解式開發實現數據的增加、刪除、修改和查詢108
6.3.1創建實體類108
6.3.2編寫控制器108
6.3.3測試API功能110
6.4實例11 :用響應式開發WebFlux 111
6.4.1編寫處理器類Handler 111
6.4.2編寫路由器類Router 112
6.5實例12:用WebFlux模式操作MongoDB數據庫,實現數據的增加、刪除、修改和查詢功能112
6.5.1添加依賴112
6.5.2創建實體類113
6.5.3編寫接口113
6.5.4編寫增加、刪除、修改和查詢
數據的API 113

進階篇

第7章Spring Boot進階118
7.1面向切面編程AOP 118
7.1. 1認識Spring AOP 118
7.1.2實例13:用AOP方式管理日誌119
7.2認識IoC容器和Servlet容器121
7.2.1認識容器121
7.2.2實例14:用IoC管理Bean 123
7.2.3實例15:用Servlet處理請求125
7.3過濾器與監聽器126
7.3.1認識過濾器126
7.3.2實例16:實現過濾器128
7.3.3認識監聽器128
7.3.4實例17:實現監聽器129
7.4自動配置130
7.4.1自定義入口類130
7.4.2自動配置的原理131
7.4.3實例18:自定義Starter 133
7.5元註解136
7.5.1了解元註解136
7.5.2實例19:自定義註解137
7.6異常處理138
7.6.1認識異常處理138
7.6.2使用控制器通知141
7.6.3實例20:自定義錯誤處理控制器142
7.6.4實例21:自定義業務異常類143
7.7單元測試145
7.7.1了解單元測試145
7.7.2 Spring Boot的測試庫145
7.7.3快速創建測試單元149
7.7.4實例22:Controller層的單元測試150
7.7.5實例23:Service層的單元測試153
7.7.6實例24:Repository層的單元測試154


第8章用ORM操作SQL數據庫156
8.1認識Java的數據庫連接模板JDBCTemplate 156
8.1.1認識JDBCTemplate 156
8.1.2實例25:用JDBCTemplate
實現數據的增加、刪除、修改和查詢157
8.1.3認識ORM 161
8.2 JPA——Java持久層API 161
8.2.1認識Spring Data 161
8.2.2認識JPA 162
8.2.3使用JPA 164
8.2.4 JPA註解和屬性介紹165
8.2.5實例26:用JPA構建實體數據表167
8.3認識JPA的接口169
8.3.1 JPA接口JpaRepository 169
8.3.2分頁排序接口PagingAndSortingRepository 169
8.3.3數據操作接口CrudRepository 170
8.3.4分頁接口Pageable和Page 170
8.3.5排序類Sort 171
8.4 JPA的查詢方式171
8.4.1約定方法名171
8.4.2 JPQL 173
8.4.3原生SQL 174
8.4.4 Specifications 175
8.4.5 ExampleMatcher 177
8.4.6謂語QueryDSL 177
8.4.7 NamedQuery 177
8.5實例27:用JPA開發文章管理模塊178
8.5.1實現文章實體178
8.5.2實現數據持久層179
8.5.3實現服務接口和服務接口的實現類179
8.5.4實現增加、刪除、修改和查詢的控制層API功能180
8.5.5實現增加、刪除、修改和查詢功能的視圖層182
8.6實現自動填充字段185
8.7掌握關係映射開發187
8.7.1認識實體間關係映射187
8.7.2實例28:實現“一對一”映射188
8.7.3實例29:實現“一對多”映射192
8.7.4實例30:實現“多對多”映射195
8.8認識MyBatis——Java數據持久層框架197
8.8.1 CRUD註解198
8.8.2映射註解198
8.8.3高級註解199
8.9實例31:用MyBatis實現數據的增加、刪除、修改、查詢和分頁200
8.9.1創建Spring Boot項目並引入依賴201
8.9.2實現數據表的自動初始化201
8.9.3實現實體對象建模202
8.9.4實現實體和數據表的映射關係202
8.9.5實現增加、刪除、修改和查詢功能203
8.9.6配置分頁功能204
8.9.7實現分頁控制器205
8.9.8創建分頁視圖206
8.10比較JPA與MyBatis 207


第9章接口架構風格——RESTful 209
9.1 REST——前後台間的通信方式209
9.1.1認識REST 209
9.1 .2認識HTTP方法與CRUD動作映射210
9.1.3實現RESTful風格的數據增加、刪除、修改和查詢210
9.2設計統一的RESTful風格的數據接口212
9.2.1版本控制212
9.2.2過濾信息213
9.2. 3確定HTTP方法213
9.2.4確定HTTP的返回狀態213
9.2.5定義統一返回格式214
9.3實例32:為APP、PC、H5網頁提供統一風格的API 214
9.3.1實現響應的枚舉類214
9.3 .2實現返回的對象實體215
9.3.3封裝返回結果215
9.3.4統一處理異常215
9.3.5編寫測試控制器219
9.3.6實現數據的增加、刪除、修改和查詢控制器220
9.3.7測試數據221
9.4實例33:用Swagger實現接口文檔222
9.4.1配置Swagger 222
9.4.2編寫接口文檔224
9.5用RestTemplate發起請求224
9.5.1認識RestTemplate 224
9.5.2實例34:用RestTemplate發送GET請求225
9.5.3實例35:用RestTemplate發送POST請求228
9.5.4用RestTemplate發送PUT和DELETE請求231


第10章集成安全框架,實現安全認證和授權233
10.1 Spring Security——Spring的安全框架233
10.1.1認識Spring Security 233
10.1.2核心類235
10.2配置Spring Security 240
10.2. 1繼承WebSecurityConfigurer-Adapter 240
10.2.2配置自定義策略240
10.2.3配置加密方式242
10.2.4自定義加密規則242
10.2.5配置多用戶系統242
10.2.6獲取當前登錄用戶信息的幾種方式244
10.3實例36:用Spring Security實現後台登錄及權限認證功能246
10.3.1引入依賴246
10.3.2創建權限開放的頁面246
10.3.3創建需要權限驗證的頁面247
10.3.4配置Spring Security 247
10.3.5創建登錄頁面248
10.3.6測試權限249
10.4權限控制方式249
10.4.1 Spring EL權限表達式249
10.4.2通過表達式控制URL權限250
10.4.3通過表達式控制方法權限252
10.4.4實例37:使用JSR-250註解254
10.4.5實例38:實現RBAC權限模型256
10.5認識JWT 258
10.6實例39:用JWT技術為Spring Boot
的API增加認證和授權保護260
10.6.1配置安全類260
10.6.2處理註冊261
10.6.3處理登錄262
10.6.4測試多方式註冊和登錄264
10.6.5測試token方式登錄和授權265
10.7 Shiro——Apache通用安全框架266
10.7.1認識Shiro安全框架266
10.7.2認識Shiro的核心組件267
10.8實例40:用Shiro實現管理後台的動態權限功能267
10.8.1創建實體267
10.8.2實現視圖模板270
10.8.3進行權限配置271
10.8.4實現認證身份功能271
10.8.5測試權限272
10.9對比Spring Security與Shiro 273


第11章在Spring Boot中使用Redis實現高並發275
11.1認識Spring Cache 275
11.1 .1聲明式緩存註解276
11.1.2實例41:用Cache進行緩存管理278
11.1.3整合Ehcache 281
11.1.4整合Caffeine 281
11.2認識Redis 282
11.2.1對比Redis與Memcached 282
11.2.2 Redis的適用場景285
11.3 Redis的數據類型285
11.4用RedisTemplate操作Redis的5種數據類型287
11.4.1認識opsFor方法287
11.4.2實例42:操作字符串287
11.4.3實例43:操作散列290
11.4.4實例44:操作列表294
11.4.5實例45:操作集合298
11.4.6實例46:操作有序集合Zset 301
11.4.7比較RedisTemplate和StringRedisTemplate 306
11.5實例47:用Redis和MyBatis完成緩存數據的增加、刪除、修改、查詢功能306
11.5.1在Spring Boot中集成Redis 306
11.5.2配置Redis類307
11.5.3創建測試實體類308
11.5.4實現實體和數據表的映射關係309
11.5.5創建Redis緩存服務層309
11.5.6完成增加、刪除、修改和查詢測試API 310
11.6實例48:用Redis和JPA實現緩存文章和點擊量311
11.6.1實現緩存文章311
11.6.2實現統計點擊量312
11.6.3實現定時同步312
11.7實例49:實現分佈式Session 313
11.7.1用Redis實現Session共享313
11.7.2配置Nginx實現負載均衡314


第12章用RabbitMQ實現系統間的數據交換316
12.1認識RabbitMQ 316
12.1.1介紹RabbitMQ 316
12.1.2使用場景317
12.1.3特性318
12.2 RabbitMQ的基本概念318
12.2.1生產者、消費者和代理318
12.2.2消息隊列319
12.2.3交換機(Exchange) 319
12.2.4綁定320
12.2.5通道321
12.2.6消息確認321
12.3 RabbitMQ的六種工作模式321
12.3.1簡單模式321
12.3.2工作隊列模式321
12.3.3交換機模式322
12.3.4 Routing轉發模式322
12.3.5主題轉發模式322
12.3.6 RPC模式323
12.4認識AmqpTemplate接口323
12.4.1發送消息324
12.4.2接收消息324
12.4.3異步接收消息325
12.5在Spring Boot中集成RabbitMQ 325
12.5.1安裝RabbitMQ 325
12.5.2界面化管理RabbitMQ 326
12.5.3在Spring Boot中配置RabbitMQ 327
12.6在Spring Boot中實現RabbitMQ
的4種發送/接收模式328
12.6.1實例50:實現發送和接收隊列328
12.6.2實例51:實現發送和接收對象330
12.6.3實例52:實現用接收器接收多個主題331
12.6.4實例53:實現廣播模式334
12.7實例54:實現消息隊列延遲功能336


第13章使用NoSQL數據庫實現搜索引擎339
13.1 Elasticsearch——搜索應用服務器339
13.1.1什麼是搜索引擎339
13.1.2用數據庫實現搜索功能339
13.1.3認識Elasticsearch 343
13.1.4 Elasticsearch應用案例343
13.1.5對比Elasticsearch與MySQL 343
13.1.6認識ElasticSearchRepository 344
13.1.7認識ElasticsearchTemplate 345
13.1.8認識註解@Document 345
13.1.9管理索引347
13.2實例55:用ELK管理Spring Boot應用程序的日誌348
13.2.1安裝Elasticsearch 348
13.2.2安裝Logstash 349
13.2.3安裝Kibana 350
13.2.4配置Spring Boot項目350
13.2.5創建日誌計劃任務351
13.2.6用Kibana查看管理日誌352
13.3實例56:在Spring Boot中實現增加、
刪除、修改、查詢文檔的功能353
13.3.1集成Elasticsearch 353
13.3.2創建實體353
13.3.3創建增加、刪除、修改和查詢API 355
13.4 Elasticsearch查詢356
13.4.1自定義方法356
13.4.2精準查詢357
13.4.3模糊查詢359
13.4.4範圍查詢362
13.4.5組合查詢362
13.4.6分頁查詢363
13.4 .7聚合查詢364
13.5實例57:實現產品搜索引擎365
13.6 Solr——搜索應用服務器367
13.6.1了解Solr 367
13.6.2安裝配置Solr 367
13.6.3整合Spring Boot和Solr 368
13.7實例58:在Solr中實現數據的增加、刪除、修改和查詢369

13.7.1創建User類369
13.7.2測試增加、刪除、修改和查詢功能369
13.8對比Elasticsearch和Solr 372

項目實戰篇

第14章實例59:開發企業級通用的後台系統376
14.1用JPA實現實體間映射關係376
14.1.1創建用戶實體376
14.1 .2創建角色實體377
14.1.3創建權限實體378
14.2用Spring Security實現動態授權(RBAC)功能380
14.2.1實現管理(增加、刪除、修改和
查詢)管理員角色功能380
14.2.2實現管理權限功能381
14.2.3實現管理管理員功能383
14.2.4配置安全類384
14.2.5實現基於RBAC權限控制
功能386
14.3監控Spring Boot應用387
14.3.1在Spring Boot中集成Actuator 387
14.3.2在Spring Boot中集成Spring Boot admin應用監控390
14.3.3在Spring Boot中集成Druid連接池監控392


第15章實例60:實現一個類似“京東”的電子商務商城394
15.1用Spring Security實現會員系統394
15.1.1實現會員實體394
15.1.2實現會員接口395
15.1.3實現用戶名、郵箱、手機號多方式註冊功能396
15.1.4實現用MQ發送會員註冊驗證郵件398
15.1.5實現用戶名、郵箱、手機號多方式登錄功能399
15.2整合會員系統(Web、APP多端多方式註冊登錄)+後台系統400
15.3實現購物系統401
15.3.1設計數據表401
15.3.2實現商品展示功能402
15.3. 3實現購物車功能403
15.3.4用Redis實現購物車數據持久化404
15.4用Redis實現分佈式秒殺系統406
15.4.1實現搶購功能,解決並發超賣問題406
15.4.2緩存頁面和限流409
15.5用RabbitMQ實現訂單過期取消功能409
15.6實現結算和支付功能411
15.6.1實現結算生成訂單功能411
15.6.2集成支付412