《學透Spring:從入門到項目實戰》封麵

學透Spring 內容簡介

【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 作者簡介

丁雪豐,美團研究員、技術圖書作譯者、極客時間《玩轉Spring全家桶》課程講師。獲得了“上海市青年金才”“騰訊雲最具價值專家”等稱號。致力於推動優秀技術在國內的發展,是SpringFramework2.0和SpringFramework2.5官方文檔翻譯項目的負責人,翻譯及原創出版了《SpringBoot實戰》《Spring攻略》《RESTfulWebServicesCookbook中文版》等8部圖書。曾就職於平安壹錢包、百度與支付寶,在互聯網金融、支付等領域積累了豐富的大型係統構建經驗。

學透Spring 目錄

第一部分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 日