
內容簡介
【Spring官方布道師&國內大咖推薦,學透Spring就用兔子書!】
【SpringBoot等10+款常用組件一本通,專注解決Spring入門之後落地難的問題】
本書的目標是讓大家又快又好地打包學透Spring技術棧,內容將涉及SpringFramework、SpringBoot、SpringCloud等Spring家族成員。
全書分為四部分:第一部分“Spring入門”,先學習基本的SpringIoC、AOP,隨後過渡到當下熱門的SpringBoot;第二部分“Spring中的數據操作”,其中既有常規的SQL、NoSQL數據操作,也有進階的數據源配置和緩存抽象;第三部分“使用Spring開發Web應用”,講述SpringMVC細節的同時,也不放過Web安全與REST;第四部分“使用Spring開發微服務”,除了常規的SpringCloud模塊,也會講解SpringCloudAlibaba。
作者簡介
丁雪豐,美團研究員、技術圖書作譯者、極客時間《玩轉Spring全家桶》課程講師。獲得了“上海市青年金才”“騰訊雲最具價值專家”等稱號。致力於推動優秀技術在國內的發展,是SpringFramework2.0和SpringFramework2.5官方文檔翻譯項目的負責人,翻譯及原創出版了《SpringBoot實戰》《Spring攻略》《RESTfulWebServicesCookbook中文版》等8部圖書。曾就職於平安壹錢包、百度與支付寶,在互聯網金融、支付等領域積累了豐富的大型係統構建經驗。
目錄
第一部分Spring入門第1章初識Spring
1.1認識Spring家族
1.1.1Spring發展歷史
1.1.2Spring家族主要成員
1.2編寫第一個Spring程序
1.2.1基礎環境準備
1.2.2通過SpringInitializr創建工程
1.2.3編寫簡單的REST服務
1.3實戰案例說明
1.3.1需求描述
1.3.2模塊說明
1.4小結
第2章SpringFramework中的IoC容器
2.1IoC容器基礎知識
2.1.1什麼是IoC容器
2.1.2容器的初始化
2.1.3BeanFactory與ApplicationContext
2.1.4容器的繼承關係
2.2Bean基礎知識
2.2.1什麼是Bean
2.2.2Bean的依賴關係
2.2.3Bean的三種配置方式
2.3定製容器與Bean的行為
2.3.1Bean的生命周期
2.3.2Aware接口的應用
2.3.3事件機製
2.3.4容器的擴展點
2.3.5優雅地關閉容器
茶歇時間:Linux環境下如何關閉進程
2.4容器中的幾種抽象
2.4.1環境抽象
2.4.2任務抽象
茶歇時間:該怎麼配置線程池
茶歇時間:本地調度vs.分布式調度
2.5小結
第3章SpringFramework中的AOP
3.1Spring中的AOP
3.1.1AOP的核心概念
3.1.2SpringAOP的實現原理
茶歇時間:使用代理模式過程中的小坑
3.2基於@AspectJ的配置
3.2.1聲明切入點
茶歇時間:SpringAOP與AspectJ中PCD的不同之處
3.2.2聲明通知
3.2.3基於@AspectJ的示例
3.3基於XMLSchema的配置
3.3.1聲明切入點
3.3.2聲明通知
3.3.3通知器
3.3.4基於XMLSchema的示例
茶歇時間:超簡潔的JUnit單元測試入門
3.4小結
第4章從SpringFramework到SpringBoot
4.1SpringBoot基礎知識
4.1.1為什麼需要SpringBoot
4.1.2SpringBoot的組成部分
4.1.3解析SpringBoot工程
4.2起步依賴
4.2.1SpringBoot內置的起步依賴
4.2.2起步依賴的實現原理
4.3自動配置
4.3.1自動配置的實現原理
茶歇時間:通過ImportSelector選擇性導入配置
4.3.2配置項加載機製詳解
4.4編寫我們自己的自動配置與起步依賴
4.4.1編寫自己的自動配置
4.4.2脫離SpringBoot實現自動配置
4.4.3編寫自己的起步依賴
4.5小結
第5章麵向生產的SpringBoot
5.1SpringBootActuator概述
5.1.1端點概覽
5.1.2端點配置
茶歇時間:針對Web和Actuator使用不同端口的好處
5.1.3定製端點信息
5.1.4開發自己的組件與端點
茶歇時間:為什麼要優先通過ObjectProvider獲取Bean
5.2基於Micrometer的係統度量
5.2.1Micrometer概述
5.2.2常用度量指標
5.2.3自定義度量指標
茶歇時間:性能分析時的95線與99線是什麼含義
5.2.4度量值的輸出
5.3部署SpringBoot應用程序
5.3.1可執行Jar及其原理
5.3.2構建啟動代碼
茶歇時間:如何優雅地關閉係統
5.3.3啟動後的一次性執行邏輯
茶歇時間:通過Lombok簡化代碼
5.4小結
第二部分Spring中的數據操作
第6章Spring中的JDBC
6.1配置數據源
6.1.1數據庫連接池
茶歇時間:HikariCP為什麼說自己比別人快
6.1.2數據源配置詳解
茶歇時間:使用Docker簡化本地開發環境的準備工作
6.2使用JDBC操作數據庫
6.2.1查詢類操作
6.2.2變更類操作
6.2.3批處理操作
6.2.4自動配置說明
6.3事務管理
6.3.1SpringFramework的事務抽象
6.3.2Spring事務的基本配置
6.3.3聲明式事務
茶歇時間:通常事務加在哪層比較合適
茶歇時間:聲明式事務背後的原理
6.3.4編程式事務
6.4異常處理
6.4.1統一的異常抽象
6.4.2自定義錯誤碼處理邏輯
6.5小結
第7章對象關係映射
7.1通過Hibernate操作數據庫
7.1.1Hibernate與JPA
7.1.2定義實體對象
茶歇時間:為什麼一定要用Money類來表示金額
茶歇時間:OpenSessionInView問題
7.1.3通過HibernateAPI操作數據庫
7.1.4通過SpringData的Repository操作數據庫
茶歇時間:JpaRepository背後的原理
7.2通過MyBatis操作數據庫
7.2.1定義MyBatis映射
7.2.2在Spring中配置並使用MyBatis
7.2.3提升MyBatis的開發效率
7.3小結
第8章數據訪問進階
8.1連接池的實用配置
8.1.1保護敏感的連接配置
8.1.2記錄SQL語句執行情況
8.1.3Druid的Filter擴展
8.2在Spring工程中訪問Redis
8.2.1配置Redis連接
茶歇時間:Redis的幾種部署模式
8.2.2Redis的基本操作
茶歇時間:本地緩存vs.分布式緩存
8.2.3通過Repository操作Redis
茶歇時間:多種不同的Repository如何共存
8.3Spring的緩存抽象
8.3.1基於注解的方法緩存
8.3.2替換不同的緩存實現
8.4小結
第三部分使用Spring開發Web應用
第9章SpringMVC實踐
9.1簡單上手SpringMVC
9.1.1SpringMVC概覽
9.1.2編寫一個簡單的控製器
9.2SpringMVC的請求處理邏輯
9.2.1請求的處理流程
茶歇時間:Servlet的基礎知識
9.2.2請求處理方法
茶歇時間:請求處理過程中遇到的幾個作用範圍
茶歇時間:SpringBoot自動配置
預埋的擴展點
9.3SpringMVC的視圖機製
9.3.1視圖解析
9.3.2常用視圖類型
9.3.3靜態資源與緩存
茶歇時間:時間vs.空間
9.4訪問Web資源
9.4.1通過RestTemplate訪問Web資源
9.4.2RestTemplate的進階用法
茶歇時間:模板設計模式
9.4.3簡單定製RestTemplate
茶歇時間:HttpComponents的Keep-Alive默認策略優化
9.5小結
第10章保護Web安全
10.1認識SpringSecurity
10.1.1模塊介紹
10.1.2工作原理
10.2身份認證
10.2.1SpringSecurity的身份認證機製
10.2.2基於用戶名和密碼的身份認證
茶歇時間:使用SpringSecurity加密保存密碼
10.2.3實現“記住我”功能
10.2.4自定義認證方式
10.3訪問授權
10.3.1訪問授權的判斷方式
10.3.2基本的權限配置
10.3.3麵向方法的訪問授權
茶歇時間:如何忽略權限校驗
10.4常見Web攻擊防護
10.4.1跨站請求偽造攻擊防護
10.4.2會話固定攻擊防護
10.4.3跨站腳本攻擊防護
10.4.4點擊劫持攻擊防護
10.4.5引導使用HTTPS
10.5客戶端程序的認證
10.5.1幾種常見的認證方式
10.5.2用RestTemplate實現簡單的認證
10.6小結
第11章Web開發進階
11.1在SpringMVC中實現AOP
11.1.1使用HandlerInterceptor實現AOP
11.1.2完善異常處理邏輯
11.2調整Web容器
11.2.1更換內嵌Web容器
茶歇時間:不同的Servlet版本與對應的容器
11.2.2調整內嵌Web容器配置
茶歇時間:如何獲得HTTPS證書
11.2.3支持HTTP/2
茶歇時間:網站提供的HTTPS服務到底是否安全
11.3支持分布式Session
11.3.1幾種常見的解決方案
11.3.2使用SpringSession實現分布式Session
11.4響應式Web
11.4.1了解ProjectReactor
11.4.2使用WebFlux代替WebMVC
茶歇時間:為什麼ProjectReactor和WebFlux還沒成為主流
11.4.3通過WebClient訪問Web資源
11.5小結
第四部分使用Spring開發微服務
第12章微服務與雲原生應用
12.1走近微服務
12.1.1什麼是微服務
12.1.2微服務的特點
12.2RESTful風格的微服務
12.2.1什麼是RESTful風格的微服務
12.2.2設計RESTful風格的微服務
12.2.3了解領域驅動設計
12.3理解雲原生
12.3.1什麼是雲原生應用
12.3.2十二要素應用
12.3.3SpringCloud概述
12.4小結
第13章服務注冊與發現
13.1常見的負載均衡方案
13.1.1集中式方案
13.1.2分布式方案
13.2使用SpringCloud實現負載均衡
13.2.1在Zookeeper中注冊服務
茶歇時間:為什麼Zookeeper不適合做服務注冊中心
13.2.2使用SpringCloudLoadBalancer訪問服務
茶歇時間:@LoadBalanced是如何工作的
13.2.3使用OpenFeign訪問服務
13.3服務注冊與發現的抽象與應用
13.3.1服務注冊的抽象
13.3.2服務發現的抽象
13.3.3在Consul中注冊服務
13.3.4在Nacos中注冊服務
茶歇時間:SpringCloudAlibaba概述
13.3.5在Eureka中注冊服務
13.4小結
第14章服務配置管理
14.1使用SpringCloudConfig實現配置管理
14.1.1為何需要配置中心
14.1.2基於SpringCloudConfigServer的配置中心
茶歇時間:加解密繞不開的JCE
14.1.3通過SpringCloudConfigClient訪問配置
14.2服務配置的實現原理與應用
14.2.1服務配置的實現原理
14.2.2基於Zookeeper的配置中心
14.2.3基於Consul的配置中心
14.2.4基於AlibabaNacos的配置中心
14.3小結
第15章服務容錯保護
15.1常見的服務容錯模式
15.1.1幾種常見的容錯模式
15.1.2通過AOP實現簡單的容錯
15.2使用Resilience4j實現容錯
15.2.1使用Resilience4j實現限流
15.2.2使用Resilience4j實現斷路
15.2.3使用Resilience4j實現隔離
15.2.4resilience4j-spring-boot2的特別說明
15.3使用SpringCloudCircuitBreaker實現容錯
15.3.1通過SpringCloudCircuitBreaker使用Resilience4j
15.3.2通過SpringCloudCircuitBreaker使用Sentinel
15.4小結
第16章服務集成
16.1使用Dubbo進行RPC通信
16.1.1Dubbo概述
16.1.2Dubbo的基礎用法
茶歇時間:多個copyProperties()該如何選擇
茶歇時間:為什麼對外的接口裏不要用枚舉
16.2使用消息中間件進行異步通信
16.2.1為什麼要使用基於消息的異步通信
茶歇時間:常見的消息模型
16.2.2通過SpringAMQP使用RabbitMQ
16.2.3通過SpringCloudStream使用Kafka
茶歇時間:用DockerCompose在本地啟動一套Kafka
16.3服務鏈路追蹤
16.3.1鏈路追蹤概述
16.3.2基於SpringCloudSleuth實現鏈路追蹤
茶歇時間:OpenTelemetry概述
16.4基於SpringCloudGateway實現微服務網關
16.4.1什麼是微服務網關
16.4.2SpringCloudGateway的路由配置
16.5小結
第五部分附錄
附錄A從SpringBoot2.x升級到3.0
A.1升級判斷標準
A.2升級操作
A.2.1依賴組件升級
A.2.2代碼修改
附錄B將應用程序打包為Docker鏡像
B.1編寫Dockerfile
茶歇時間:如何選擇基礎JavaDocker鏡像
B.2構建並運行鏡像
B.3構建分層鏡像
B.4其他打包方式
附錄C通過SpringNative打包本地鏡像
C.1GraalVM與SpringNative
C.1.1GraalVM簡介
C.1.2SpringNative簡介
C.2編譯打包本地鏡像
C.2.1準備工作
C.2.2調整編譯打包配置
C.2.3修改代碼
C.2.4其他優化
後記549
······
最後修改:2023 年 11 月 13 日
© 允許規範轉載
