-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Java EE互聯網輕量級框架整合開發:SSM+Redis+Spring微服務(上下冊)

( 簡體 字)
作者:楊開振,劉家成類別:1. -> 程式設計 -> JAVA -> J2EE
譯者:
出版社:電子工業出版社Java EE互聯網輕量級框架整合開發:SSM+Redis+Spring微服務(上下冊) 3dWoo書號: 54835
詢問書籍請說出此書號!

缺書
NT售價: 995

出版日:7/1/2021
頁數:788
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121413995
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

隨著移動互聯網的興起以及手機和平板電腦的普及,Java開發方向發生了很大變化,漸漸從管理系統走向了互聯網系統。互聯網系統的要求是大數據、高并發、高響應,而非管理系統的少數據、低并發和緩慢響應。為順應技術發展趨勢,2017年夏,筆者出版了《Java EE互聯網輕量級框架整合開發 SSM框架(Spring MVC+Spring+MyBatis)和Redis實現》一書,比較全面和系統地介紹了Java EE的開發知識,受到了業內的廣泛肯定。但是隨著微服務的崛起,以及技術的更替,該書的知識點已經開始過時,更新已是必然,這就是本書出版的原因。
移動互聯網的新要求
?高并發:舉個例子,大公司企業ERP應用,有1萬名員工使用,同時在線的用戶可能只有數百人,而操作一個業務的同一個數據的可能只有幾個人,其系統一般不會存在高并發的壓力,使用傳統程序和數據庫完全可以應付。在互聯網中,對于一件熱門的商品,可能剛一上市就有成千上萬的請求到達服務器,要求服務器瞬間執行數以萬計的數據操作,對性能要求高,操作不當容易造成網站癱瘓,引發網站的生存危機。
?高響應:企業管理系統可以緩慢處理一些業務,而在高并發的互聯網系統中,卻不可以,按照互聯網的要求一般以5秒為上限,超過5秒后響應,則用戶體驗不好,影響用戶忠誠度,因此往往需要在高并發和大數據量的場景下實現。
?數據一致性:由于高并發,多個線程對同一數據同時訪問,需要保證數據的一致性,比如電商網站的金額、商品庫存不能出錯,還要保證其性能不能太差,這是在管理系統中不會出現的場景。
?技術復雜化:在互聯網中流行許多新技術,比如常見的NoSQL(Redis、MongoDB),微服務(Spring Boot和Spring Cloud)等技術。
為什么選擇SSM框架+Redis+Spring微服務的開發模式
Struts2框架和Spring結合,多年來沒有改變臃腫的老毛病,更為嚴重的是近年來多次出現的漏洞問題,使得其名聲和使用率大降。這個時候Spring MVC框架成了新一代MVC框架的主流。它原生于Spring框架,可以無縫對接Spring的核心技術。與Struts不同,它的流程模塊化,沒有那么多臃腫的類,所以互聯網應用的框架大部分使用Spring MVC。
在目前企業的Java應用中,Spring框架是必需的,Spring的核心是IoC(控制反轉),它是一個大容器,方便組裝和管理各類系統內外部資源,同時支持AOP(面向切面編程),這是對面向對象的補充,目前廣泛用于日志和數據庫事務控制,減少了大量的重復代碼,使得程序更為清晰。因為Spring可以使模塊解耦,控制對象之間的協作,所以Spring框架是目前Java最為流行的框架。
對于Hibernate,筆者感慨最多,在需要存儲過程或者復雜SQL時,它的映射關系幾乎用不上,所有的問題都需要自己敲代碼處理。作為全映射的框架,它的致命缺點是沒有辦法完全掌控數據庫的SQL,而優化SQL是高并發、高響應系統的必然要求,這是互聯網系統的普遍特性,所以Hibernate在互聯網系統中被排除了。而另一個持久層框架MyBatis需要編寫SQL,提供映射規則,不過它加入了動態SQL、自動映射、接口編程等功能,從而變得簡單易用,同時支持SQL優化、動態綁定,并滿足高并發和高響應的要求,所以它成為最流行的Java互聯網持久框架。
NoSQL是基于內存的,也就是將數據放在內存中,而不是像數據庫那樣放在磁盤上,內存的讀取速度是磁盤讀取速度的幾十倍到上百倍,所以NoSQL工具的讀取速度遠比數據庫讀取速度要快得多,滿足了高響應的要求。即使NoSQL將數據放在磁盤中,它也是一種半結構化的數據格式,讀取到解析的復雜度遠比數據庫要低,這是因為數據庫存儲的是經過結構化、多范式等有復雜規則的數據,還原為內存結構的速度較慢。NoSQL在很大程度上滿足了高并發、快速讀/寫和響應的要求,所以它也是Java互聯網系統的利器。于是兩種NoSQL工具——Redis和MongoDB流行起來,尤其是Redis,已經成為主要的NoSQL工具,本書會詳細介紹它的常用方法。
隨著微服務的崛起,當前使用Spring的方式也以微服務為主,所以本書還會討論關于微服務(Spring Boot和Spring Cloud)的內容。其中,Spring Boot是基于Spring技術進行封裝的,更易于開發Spring應用,而Spring Cloud則以Spring Boot的形式對一些分布式組件進行封裝,更易于理解和使用。
基于以上原因,SSM(Spring+Spring MVC +MyBatis)已經成為Java互聯網時代的主流框架,而Spring微服務則更容易使用,加之Redis緩存已經成了主流的NoSQL技術,筆者愿意將自己所掌握的知識分享給大家,為目前奮斗在SSM、Spring微服務和Redis戰線上的同行們奉獻一本有價值的參考書,給準備進入這個行業的新手一定的幫助和指導。
本書的特點
?實用性:全書內容來自筆者多年互聯網實踐開發經驗,理論結合實際。
?理論性:突出基礎理念,結合設計模式闡述框架的實現原理和應用理念,讓讀者知其然也知其所以然。
?與時俱進:介紹最新框架技術,與當前互聯網企業保持同步,比如全注解搭建SSM框架、Spring微服務和Redis應用,方便讀者把最新技術應用到實際工作中去。
?突出熱點和重點:著重介紹MyBatis實踐應用,Spring數據庫及事務應用,使用Spring介紹Redis實踐應用、Spring微服務、高并發和鎖等互聯網熱門技術的熱點和重點。
?性能要求突出:這是移動互聯網的要求,因為互聯網面對大數據和高并發,體現互聯網企業真實需求。
本書的內容安排
本書基于一線企業的實際需求,介紹了Java互聯網最流行的框架技術,內容全面,以實際應用為導向,取舍明確,尤其對于技術的重點、難點,解釋得深入淺出,案例豐富,本書分為7部分。
第1部分,講解Java EE和框架基礎,讓讀者對每一門技術的主要作用都有所了解。介紹SSM框架的主要設計模式,有助于從底層深入理解框架。
第2部分,講解MyBatis的基礎應用,包括其主要組成、配置、映射器、動態SQL,并且深入MyBatis的底層運行原理和插件,詳細討論它們的高級應用。
第3部分,講解Spring IoC和Spring AOP。掌握Spring如何通過IoC管理資源,通過設計模式討論AOP的實現原理、使用方法及實踐。討論Spring對數據庫的支持,如何整合MyBatis,并且著重討論了Spring數據庫事務的相關內容,包括數據庫隔離級別和傳播行為的應用。
第4部分,講解Spring MVC主要的流程、HandlerMapping的應用、控制器Controller、處理適配器(HandlerAdapter)、視圖和視圖解析器,然后討論傳遞參數、注解、數據校驗、消息轉換和國際化等應用。
第5部分,講解NoSQL的優勢和應用方法,Redis的常用數據類型和主要命令,以及一些基本的特性(比如事務)和用法,并教會讀者在Java和Spring環境中使用它。
第6部分,講解Spring微服務,微服務的概念,通過對Spring Boot和Spring Cloud的講解讓大家理解Spring微服務的開發。
第7部分,通過Spring微服務實例串聯本書的主要知識點,讓大家體驗Java后端開發的主流技術;注重性能分析,介紹一些常見處理高并發的方法,以滿足企業的真實需要。
和讀者的約定
為了方便論述,我們進行以下約定。
?import語句一般不出現在代碼中,主要是為了縮減篇幅,可以使用IDE自動導入,只有在筆者認為有必要的場景和一些重要的實例中,它才會出現在代碼中。
?本書的例子大部分使用附錄A中的數據模型,附錄A中有基本的論述和對應的SQL語句。
?對于普通的POJO,筆者大部分都會以“/**setter and getter**/”代替POJO的setter和getter方法,類似這樣:

public class Role {
private Long id;
private String roleName;
private String note;
/**setter and getter**/
}

讀者可以用IDE生成這些屬性的setter和getter方法,這樣做主要是為了節省篇幅,突出重點,也有利于讀者的閱讀。當然在一些特別重要的和使用廣泛的場景中,比如MyBatis入門、SSM框架整合等,才會給出全量代碼,以便讀者進行編碼學習。
?在默認情況下,筆者使用互聯網最常用的MySQL數據庫,當使用其他數據庫時,筆者會事先加以說明。
?本書采用的MyBatis版本是3.5.3,Spring的版本是5.2.1.RELEASE,Redis的版本是5.0.8,在實踐的過程中讀者需要注意版本之間的差異。
本書的目標讀者
閱讀本書,讀者要掌握以下知識:Java編程基礎和數據庫基礎知識(本書以互聯網數據庫MySQL為主)。本書以互聯網企業最廣泛使用的技術框架為中心講解Java EE和Spring微服務技術,從入門到實踐,適合有志于從事Java EE和Spring微服務開發的各類人員閱讀,通過學習本書能夠有效提高技術能力,并將知識點應用到實際的企業工作中去。本書也可以作為大中專院校計算機專業的教材,幫助在校學生學習企業實際應用,當然讀者也可以把本書當作一本工作手冊進行查閱。
致謝
本書的成功出版,要感謝電子工業出版社的編輯們,沒有他們的辛苦付出,絕對沒有本書的成功出版,尤其是孫學瑛編輯,寫作過程中她給了我很多的建議和幫助,為此付出了很多時間和精力。
在撰寫本書期間,我去了四川旅游,得到了校友劉家成的接待,和他聊起了創作本書的事情,他也自愿加入了本書的創作和更新,也幫助我編寫和完善了部分章節的內容;同時得到前同事譚茂華的協助,他以過硬的技術為我排除了不少錯誤,給了我很多很好的建議,并撰寫了一些很好的實例;在此對他們的辛苦付出表示最誠摯的感謝。
互聯網技術博大精深,涉及的技術門類特別多,甚至跨越行業,技術更新較快。撰寫本書時筆者也遇到了一些困難,由于涉及的知識十分廣泛,對技術要求更高,出錯的概率也大大增加,正如沒有完美的程序一樣,也沒有完美的書,一切都需要一個完善的過程,所以尊敬的讀者,如果對本書有任何意見或建議,歡迎發送郵件,或者在筆者的博客上留言,以便于本書的修訂。
楊開振
內容簡介:

隨著移動互聯網的興起,以Java技術為后臺的互聯網技術占據了市場的主導地位。在Java互聯網后臺開發中,SSM框架(Spring+Spring?MVC+MyBatis)成為了主要架構,本書講述了SSM框架從入門到實際工作的要求。與此同時,為了提高系統性能,NoSQL(尤其是Redis)在互聯網系統中已經廣泛應用用,為了適應這個變化,本書通過Spring講解了有關Redis的技術應用。隨著微服務的異軍凸起,Spring微服務也成為時代的主流,本書也包括這方面的內容。本書主要分為7部分:第1部分對Java互聯網的框架和主要涉及的模式做簡單介紹;第2部分講述MyBatis技術;第3部分講述Spring基礎(包括IoC、AOP和數據庫應用),重點講解Spring數據庫事務應用,以滿足互聯網企業的應用要求;第4部分講述Spring?MVC框架;第5部分通過Spring講解Redis技術;第6部分講解Spring微服務(Spring?Boot和Spring?Cloud);第7部分結合本書內容講解Spring微服務實踐。
目錄:

第1部分 入門和技術基礎
第1章 Java EE基礎 2
1.1 Java EE概述 2
1.1.1 Java EE容器 3
1.1.2 Java EE組件 3
1.2 開發環境簡介 4
1.2.1 Tomcat簡介 4
1.2.1 Maven 5
1.2.3 Web項目結構 6
1.2.4 Web項目發布包 7
1.3 Web容器的組件——Servlet 7
1.3.1 Servlet入門實例 7
1.3.2 Servlet的生命周期 8
1.3.3 HttpServletRequest的應用 12
1.3.4 HttpServletResponse的應用 14
1.3.5 過濾器的使用 17
1.3.6 監聽 20
1.3.7 Servlet容器初始化器 21
1.3.8 使用Cookie 23
1.3.9 提交表單 24
1.3.10 使用web.xml 26
第2章 認識SSM框架、Redis和微服務 28
2.1 Spring框架 28
2.1.1 Spring IoC簡介 28
2.1.2 Spring AOP 30
2.2 MyBatis簡介 31
2.2.1 Hibernate簡介 32
2.2.2 MyBatis 34
2.2.3 Hibernate和MyBatis的區別 35
2.3 Spring MVC簡介 36
2.4 最流行的NoSQL——Redis 36
2.5 SSM+Redis結構框圖及概述 37
2.6 Spring微服務 38
第3章 Java設計模式 40
3.1 Java反射技術 40
3.1.1 通過反射構建對象 40
3.1.2 反射方法 42
3.1.3 實例 42
3.2 動態代理模式和責任鏈模式 43
3.2.1 JDK動態代理 44
3.2.2 CGLIB動態代理 46
3.2.3 攔截器 48
3.2.4 責任鏈模式 51
3.3 觀察者模式 54
3.3.1 概述 54
3.3.2 實例 55
3.4 普通工廠模式和抽象工廠模式 58
3.4.1 普通工廠模式 58
3.4.2 抽象工廠模式 59
3.5 建造者模式 61
3.5.1 概述 61
3.5.2 Builder模式實例 62
第2部分 互聯網持久框架——MyBatis
第4章 認識MyBatis核心組件 66
4.1 持久層的概念和MyBatis的特點 66
4.2 準備MyBatis環境 67
4.3 MyBatis的核心組件 69
4.4 SqlSessionFactory 70
4.4.1 使用XML配置文件構建SqlSessionFactory對象 70
4.4.2 使用代碼構建SqlSessionFactory對象 72
4.5 SqlSession 72
4.6 映射器 73
4.6.1 用XML實現映射器 74
4.6.2 用注解實現映射器 75
4.6.3 用SqlSession發送SQL 76
4.6.4 用Mapper接口發送SQL 77
4.6.5 兩種發送SQL的方式對比 77
4.7 生命周期 77
4.7.1 SqlSessionFactoryBuilder 77
4.7.2 SqlSessionFactory 78
4.7.3 SqlSession 78
4.7.4 Mapper 78
4.8 實例 79
第5章 MyBatis配置 85
5.1 概述 85
5.2 properties屬性 86
5.2.1 property子元素 86
5.2.2 properties文件 87
5.2.3 程序代碼傳遞 87
5.3 settings配置 88
5.4 typeAliases別名 90
5.4.1 系統定義別名 91
5.4.2 自定義別名 92
5.5 typeHandler類型轉換器 93
5.5.1 系統定義的typeHandler 94
5.5.2 自定義typeHandler 98
5.5.3 枚舉typeHandler 101
5.5.4 文件操作 105
5.6 對象工廠 106
5.7 插件 108
5.8 運行環境 108
5.8.1 事務管理器 109
5.8.2 數據源環境 111
5.9 databaseIdProvider 114
5.9.1 使用系統默認的databaseIdProvider 114
5.9.2 不使用系統規則 116
5.10 引入映射器的方法 118
第6章 映射器 120
6.1 概述 120
6.2 select元素——查詢語句 121
6.2.1 簡單的select元素的應用 122
6.2.2 自動映射和駝峰映射 123
6.2.3 傳遞多個參數 124
6.2.4 使用resultMap映射結果集 127
6.2.5 分頁參數RowBounds 127
6.3 insert元素——插入語句 129
6.3.1 概述 129
6.3.2 簡單的insert語句的應用 130
6.3.3 主鍵回填 130
6.3.4 自定義主鍵 131
6.4 update元素和delete元素 132
6.5 sql元素 132
6.6 參數 133
6.6.1 概述 133
6.6.2 存儲過程參數支持 134
6.6.3 特殊字符串的替換和處理(#和$) 134
6.7 resultMap元素 134
6.7.1 resultMap元素的構成 135
6.7.2 使用Map存儲結果集 136
6.7.3 使用POJO存儲結果集 136
6.8 級聯 137
6.8.1 MyBatis中的級聯 137
6.8.2 建立POJO 140
6.8.3 配置映射文件 143
6.8.4 N+1問題 147
6.8.5 延遲加載 147
6.8.6 另一種級聯 151
6.8.7 多對多級聯 153
6.9 緩存 156
6.9.1 一級緩存和二級緩存 157
6.9.2 緩存配置項、自定義和引用 160
6.10 存儲過程 161
6.10.1 IN和OUT參數存儲過程 162
6.10.2 游標的使用 164
第7章 動態SQL 167
7.1 概述 167
7.2 if元素 167
7.3 choose、when和otherwise元素 168
7.4 trim、where和set元素 169
7.5 foreach元素 170
7.6 用test的屬性判斷字符串 171
7.7 bind元素 171
第8章 MyBatis的解析和運行原理 173
8.1 構建SqlSessionFactory過程 174
8.1.1 構建Configuration 175
8.1.2 構建映射器的內部組成 176
8.1.3 構建SqlSessionFactory 178
8.2 SqlSession運行過程 179
8.2.1 映射器的動態代理 179
8.2.2 SqlSession運行原理 183
第9章 插件 192
9.1 插件接口 192
9.2 插件的初始化 193
9.3 插件的代理和反射設計 194
9.4 常用的工具類——MetaObject 197
9.5 插件開發過程和實例 198
9.5.1 確定需要攔截的簽名 198
9.5.2 實現攔截方法 200
9.5.3 配置和運行 202
9.5.4 插件實例——分頁插件 203
第3部分 Spring基礎
第10章 Spring IoC的概念 216
10.1 Spring概述 216
10.2 Spring IoC概述 218
10.2.1 主動創建對象 219
10.2.2 被動創建對象 220
10.2.3 Spring IoC闡述 222
10.3 Spring IoC容器 223
10.3.1 Spring IoC容器的設計 223
10.3.2 Spring IoC容器的初始化 227
10.3.3 Spring Bean的生命周期 228
第11章 裝配Spring Bean 233
11.1 依賴注入和依賴查找 233
11.1.1 構造器注入 233
11.1.2 使用setter注入 234
11.1.3 依賴查找 235
11.2 裝配Bean概述 236
11.3 通過XML配置裝配Bean 237
11.3.1 裝配簡易值 237
11.3.2 裝配集合 238
11.3.3 命名空間裝配 241
11.4 通過注解裝配Bean 243
11.4.1 使用注解@Component裝配Bean 243
11.4.2 自動裝配——@Autowired 247
11.4.3 自動裝配的歧義性(注解@Primary和注解@Qualifier) 248
11.4.4 裝載帶有參數的構造方法類 251
11.4.5 使用注解@Bean裝配 252
11.4.6 注解自定義Bean的初始化和銷毀方法 253
11.5 裝配的混合使用 253
11.6 使用Profile 256
11.6.1 使用注解@Profile配置 256
11.6.2 使用XML定義Profile 257
11.6.3 啟動Profile 258
11.7 加載屬性文件 260
11.7.1 使用注解方式加載屬性文件 261
11.7.2 使用XML方式加載屬性文件 263
11.8 條件化裝配Bean 264
11.9 Bean的作用域 265
11.10 使用Spring表達式 268
11.10.1 Spring EL相關的類 268
11.10.2 Bean的屬性和方法 270
11.10.3 使用類的靜態常量和方法 271
11.10.4 Spring EL運算 271
第12章 面向切面編程 273
12.1 一個簡單的約定游戲 273
12.1.1 約定規則 273
12.1.2 讀者的代碼 275
12.1.3 筆者的代碼 277
12.2 Spring AOP的基本概念 279
12.2.1 AOP的概念和使用原因 279
12.2.2 面向切面編程的術語 283
12.2.3 Spring對AOP的支持 285
12.3 使用注解@AspectJ開發Spring AOP 285
12.3.1 選擇連接點 285
12.3.2 創建切面 286
12.3.3 切點 287
12.3.4 測試AOP 289
12.3.5 環繞通知 291
12.3.6 織入 293
12.3.7 向通知傳遞參數 294
12.3.8 引入 295
12.4 使用XML配置開發Spring AOP 297
12.4.1 各類通知 299
12.4.2 環繞通知 301
12.4.3 向通知傳遞參數 302
12.4.4 引入 302
12.5 經典Spring AOP應用程序 303
12.6 多個切面 305
第13章 Spring和數據庫編程 311
13.1 傳統的JDBC代碼的弊端 311
13.2 配置數據庫 313
13.2.1 使用簡單數據庫配置 313
13.2.2 使用第三方數據庫連接池 314
13.2.3 使用JNDI數據庫連接池 314
13.3 JDBC代碼失控的解決方案——JdbcTemplate 315
13.3.1 JdbcTemplate的增、刪、查、改 316
13.3.2 執行多條SQL語句 317
13.3.3 JdbcTemplate的源碼分析 319
13.4 MyBatis-Spring項目 320
13.4.1 配置SqlSessionFactoryBean 321
13.4.2 SqlSessionTemplate的配置 325
13.4.3 配置MapperFactoryBean 327
13.4.4 配置MapperScannerConfigurer 327
13.4.5 定制掃描 330
13.4.6 使用Java配置文件配置MyBatis-Spring項目 331
13.4.7 測試Spring+MyBatis 333
第14章 深入Spring數據庫事務管理 336
14.1 Spring數據庫事務管理器的設計 336
14.1.1 配置事務管理器 339
14.1.2 用Java配置方式實現Spring數據庫事務 340
14.2 編程式事務 342
14.3 聲明式事務 342
14.3.1 @Transactional的配置項 343
14.3.2 使用XML配置事務管理器 344
14.3.3 事務定義器 345
14.3.4 聲明式事務的約定流程 346
14.4 數據庫的相關知識 348
14.4.1 數據庫事務ACID特性 348
14.4.2 丟失更新 348
14.4.3 隔離級別 349
14.5 選擇隔離級別和傳播行為 352
14.5.1 選擇隔離級別 352
14.5.2 傳播行為 353
14.6 在Spring+MyBatis組合中使用事務 354
14.6.1 實例 354
14.6.2 深入理解傳播行為 361
14.7 注解@Transactional的自調用失效問題 366
14.8 典型錯誤用法剖析 371
14.8.1 錯誤使用Service 371
14.8.2 長時間占用事務 372
14.8.3 錯誤捕捉異常 374
第4部分 Spring MVC框架
第15章 Spring MVC的初始化和流程 2
15.1 MVC設計概述 2
15.1.1 Spring MVC的架構 3
15.1.2 Spring MVC組件與流程 4
15.1.3 Spring MVC入門實例 5
15.2 Spring MVC初始化 9
15.2.1 初始化Spring IoC上下文 10
15.2.2 初始化映射請求上下文 10
15.2.3 使用注解配置方式初始化 16
15.2.4 WebMvcConfigurer接口 20
15.3 Spring MVC開發流程詳解 21
15.3.1 注解@RequestMapping的使用 21
15.3.2 控制器的開發 23
15.3.3 視圖渲染 27
第16章 Spring MVC基礎組件開發 31
16.1 控制器接收各類請求參數 31
16.1.1 接收普通請求參數 32
16.1.2 使用注解@RequestParam獲取參數 34
16.1.3 使用URL傳遞參數 35
16.1.4 傳遞JSON參數 36
16.1.5 接收列表數據和表單序列化 38
16.2 重定向 41
16.3 保存并獲取屬性參數 43
16.3.1 注解@RequestAttribute 43
16.3.2 注解@SessionAttribute和注解@SessionAttributes 45
16.3.3 注解@CookieValue和注解@RequestHeader 48
16.4 驗證表單 49
16.4.1 使用JSR 303注解驗證輸入內容 49
16.4.2 使用驗證器 53
16.5 數據模型 56
16.6 視圖和視圖解析器 58
16.6.1 視圖 58
16.6.2 視圖解析器 61
16.6.3 實例:Excel視圖的使用 62
16.7 上傳文件 65
16.7.1 MultipartResolver概述 66
16.7.2 提交上傳文件表單 69
第17章 構建REST風格網站 73
17.1 REST風格的特點 73
17.1.1 REST風格的概念 73
17.1.2 注解@ResponseBody的使用 75
17.2 Spring MVC對REST風格的支持 76
17.2.1 Spring MVC支持REST風格的注解 77
17.2.2 返回結果封裝 81
17.3 RestTemplate的使用 84
第18章 Spring MVC高級應用 89
18.1 Spring MVC處理器執行的過程 89
18.1.1 HandlerMethodArgumentResolver機制 90
18.1.2 轉換器和格式化器概述 92
18.1.3 一對一轉換器(Converter) 93
18.1.4 數組和集合轉換器(GenericConverter) 96
18.1.5 格式化器(Formatter) 100
18.1.6 HttpMessageConverter消息轉換器 103
18.2 攔截器 106
18.2.1 攔截器的定義 106
18.2.2 單個攔截器的執行流程 107
18.2.3 開發攔截器 108
18.2.4 多個攔截器執行的順序 109
18.3 為控制器添加通知 112
18.4 處理異常 116
18.5 國際化 117
18.5.1 概述 117
18.5.2 MessageSource接口 119
18.5.3 CookieLocaleResolver和SessionLocaleResolver 121
18.5.4 國際化攔截器(LocaleChangeInterceptor) 122
18.5.5 開發國際化 123
第5部分 Redis應用
第19章 Redis概述 126
19.1 Redis在Java Web中的應用 127
19.1.1 緩存 127
19.1.2 高速讀/寫場景 128
19.2 Redis的安裝和使用 129
19.2.1 在Windows環境下安裝Redis 129
19.2.2 在Linux下安裝Redis 131
19.3 Redis的Java API 133
19.3.1 在Java程序中使用Redis 133
19.3.2 在Spring中使用Redis 134
19.4 Redis的數據結構簡介 141
19.5 Redis和關系數據庫的差異 142
第20章 Redis數據結構和其常用命令 144
20.1 Redis數據結構——字符串 145
20.2 Redis數據結構——哈希 150
20.3 Redis數據結構——鏈表 154
20.4 Redis數據結構——集合 160
20.5 Redis數據結構——有序集合 163
20.5.1 Redis基礎命令 163
20.5.2 spring-data-redis對有序集合的封裝 166
20.5.3 使用Spring操作有序集合 168
第21章 Redis的一些常用技術 171
21.1 Redis事務 171
21.1.1 Redis的基礎事務 172
21.1.2 探索Redis事務回滾 174
21.1.3 使用watch命令監控事務 175
21.2 流水線 178
21.3 發布訂閱 180
21.4 超時命令 184
21.5 使用Lua語言 186
21.5.1 執行輸入Lua程序代碼 186
21.5.2 執行Lua文件 190
第22章 Redis配置 193
22.1 Redis配置文件 193
22.2 Redis備份(持久化) 194
22.2.1 快照備份 194
22.2.2 AOF備份 195
22.3 Redis內存回收策略 196
22.4 復制 197
22.4.1 主從同步基礎概念 198
22.4.2 Redis主從同步配置 198
22.4.3 Redis主從同步的過程 199
22.5 哨兵模式 201
22.5.1 哨兵模式概述 201
22.5.2 搭建哨兵模式 202
22.5.3 在Java中使用哨兵模式 204
22.5.4 哨兵模式的其他配置項 207
22.6 Redis集群 207
22.6.1 概述 207
22.6.2 搭建Redis集群 210
22.6.3 在Spring中使用Redis集群 215
第23章 Spring緩存機制和Redis的結合 217
23.1 Redis和數據庫的結合 217
23.1.1 Redis和數據庫讀操作 218
23.1.2 Redis和數據庫寫操作 219
23.2 使用Spring緩存機制整合Redis 220
23.2.1 準備測試環境 220
23.2.2 Spring的緩存管理器 224
23.2.3 緩存注解簡介 226
23.2.4 注解@Cacheable和@CachePut 226
23.2.5 注解@CacheEvict 230
23.2.6 不適用緩存的方法 231
23.2.7 自調用失效問題 231
23.2.8 Redis緩存管理器的配置——RedisCacheConfiguration 232
23.3 RedisTemplate的實例 234
第6部分 Spring微服務基礎
第24章 Spring Boot入門 238
24.1 Spring Boot的概念 238
24.1.1 什么是Spring Boot? 238
24.1.2 為什么要使用Spring Boot? 239
24.1.3 為什么需要學習傳統Spring應用程序? 239
24.2 搭建Spring Boot開發環境 239
24.2.1 使用Eclipse開發Spring Boot項目 240
24.2.2 使用IntelliJ IDEA開發Spring Boot項目 242
24.2.3 運行Spring Boot項目 243
24.3 認識Spring Boot項目和開發 244
24.3.1 Spring Boot項目是如何運行的 244
24.3.2 在Spring Boot項目中如何進行自定義開發 246
24.3.3 使用JSP視圖 249
第25章 Spring Boot開發 252
25.1 使用Spring Boot開發數據庫 252
25.1.1 配置數據源 252
25.1.2 整合MyBatis 258
25.1.3 數據庫事務 264
25.2 使用Spring MVC 264
25.2.1 使用WebMvcConfigurer接口 265
25.2.2 使用Spring Boot的Spring MVC配置 266
25.2.3 使用轉換器 266
25.3 使用Redis 268
25.3.1 配置和使用Redis 268
25.3.2 使用緩存管理器 272
第26章 Spring Boot部署、測試和監控 274
26.1 打包、部署和運行Spring Boot項目 275
26.1.1 打包Spring Boot項目 275
26.1.2 運行Spring Boot項目 276
26.1.3 修改Spring Boot項目的配置 277
26.2 Spring Boot Actuator 278
26.2.1 Actuator端點簡介 278
26.2.2 保護Actuator端點 280
26.2.3 配置項 281
26.2.4 自定義端點 283
26.2.5 健康指標項 286
26.3 測試 289
26.3.1 基本測試 290
26.3.2 使用隨機端口測試REST風格的請求 291
26.3.3 Mock測試 292


第27章 Spring Cloud微服務入門 295
27.1 微服務架構的概念 295
27.1.1 微服務的風格 295
27.1.2 微服務架構總結 298
27.2 Spring Cloud基礎架構和概念 298
27.2.1 Spring Cloud概述 299
27.2.2 Spring Cloud的架構、組件和基礎概念 299
27.3 服務治理和服務發現 301
27.3.1 服務治理中心——Eureka 301
27.3.2 服務發現 303
27.3.3 高可用 305
27.3.4 基礎架構 307
27.4 服務調用——Ribbon 309
27.4.1 Ribbon概述 310
27.4.2 Ribbon實例 310
27.4.3 Ribbon工作原理 312
27.5 斷路器——Hystrix 315
27.5.1 Hystrix的使用 316
27.5.2 艙壁隔離 321
27.5.3 Hystrix儀表盤 323
27.7 服務調用——OpenFeign 327
27.7.1 入門實例 327
27.7.2 在OpenFeign中使用Hystrix 330
27.8 舊網關——Zuul 331
27.8.1 入門實例 332
27.8.2 過濾器 333
27.9 新網關——Gateway 337
27.9.1 入門實例 338
27.9.2 Gateway中的術語 340
27.9.3 Gateway已有斷言和過濾器的使用 340
27.9.4 自定義過濾器 345
27.10 新斷路器——Resilience4j 347
27.10.1 斷路器 348
27.10.2 限速器 350
27.10.3 艙壁隔離 352
27.10.4 限時器 353


第7部分 系統實踐
第28章 高并發系統設計和Spring微服務實例 356
28.1 高并發系統設計 356
28.1.1 高并發系統的優化經驗 356
28.1.2 性能 357
28.1.3 高可用 363
28.2 微服務實例 365
28.2.1 Spring Boot下的整合(product模塊) 366
28.2.2 服務調用(user模塊) 376
28.2.3 網關(gateway模塊) 378
28.2.4 測試 380
附錄A 數據庫表模型 381
序: