SSM(Spring MVC Spring MyBatis)源碼深入解析與企業項目實戰

《SSM(Spring MVC Spring MyBatis)源碼深入解析與企業項目實戰》是2023年中國水利水電出版社出版的圖書。

基本介紹

  • 中文名:SSM(Spring MVC Spring MyBatis)源碼深入解析與企業項目實戰
  • 出版時間:2023年3月1日
  • 出版社:中國水利水電出版社
  • ISBN:9787522612713
內容簡介,圖書目錄,作者簡介,

內容簡介

《SSM(Spring MVC+Spring+MyBatis)源碼深入解析與企業項目實戰》是一本由淺入深,用簡單易懂的語言講解 Spring、Spring MVC、MyBatis 框架魅力的編程寶典。全書共五篇,分別是基礎概念篇、SpringMVC 框架篇、MyBatis 框架篇、Spring 框架篇和項目實戰篇。內容分為 20 章,從 Spring、Spring MVC、MyBatis 的基礎開始,逐步深入至框架、核心套用源碼的講解,以及 SSM 在項目中的套用,讓讀者能理解框架的設計者為什麼如此實現,又是如何實現的。本書不只是讓讀者學會如何使用框架,還要讓讀者學會如何實現框架,學習實現技術的方法,授讀者以“漁”。
《SSM(Spring MVC+Spring+MyBatis)源碼深入解析與企業項目實戰》一書語言通俗易懂,案例豐富、實用性強,特別適合 Java 編程愛好者、想深入學習 Spring 源碼的讀者閱讀。另外,本書也適合作為相關培訓機構,以及中高等院校、套用型本科的教材使用。

圖書目錄

第1章 SSM框架和Redis 2
1.1 了解Spring框架 3
1.1.1 如何學習Spring 3
1.1.2 控制反轉簡介 3
1.1.3 面向切面編程簡介 4
1.2 了解MyBatis 5
1.2.1 MyBatis簡介 5
1.2.2 MyBatis和Hibernate的比較 6
1.7 了解Spring MVC 7
1.6 了解Redis 8
1.5 Spring、Spring MVC和MyBatis的分工與合作 9
第2章 類載入器、反射和動態代理 11
2.1 類載入器 12
2.1.1 生成對象的實例的流程 12
2.1.2 雙親委派機制 13
2.1.3 類載入器的工作原理 14
2.1.4 自定義類載入器 16
2.2 反射機制 18
2.2.1 什麼是反射 18
2.2.2 類反射入門示例 19
2.2.3 通過類反射實現工廠方法 21
2.2.4 獲取Class對象的三種方式 23
2.2.5 反射的套用場景與優缺點 25
2.3 動態代理 28
2.3.1 理解動態代理 28
2.3.2 JDK動態代理 29
2.3.3 CGLib動態代理 34
第3章 設計模式 36
3.1 單例模式 37
3.1.1 懶漢式單例模式 37
3.1.2 餓漢式單例模式 39
3.1.3 枚舉單例模式 40
3.1.4 注意事項 40
3.2 工廠模式 41
3.2.1 簡單工廠模式 41
3.2.2 工廠方法模式 43
3.2.3 抽象工廠模式 45
3.3 代理模式 48
3.4 策略模式 49
3.4.1 策略模式的定義 49
3.4.2 策略模式的作用 49
3.4.3 策略模式的結構 50
3.4.4 策略模式的套用 50
3.5 模板模式 54
3.5.1 策略模式與模板模式 54
3.5.2 模板模式的套用 54
3.6 MVC模式 57
3.6.1 MVC模式的三大組件 58
3.6.2 MVC模式的優點 58
3.6.3 MVC模式的套用 58
第4章 了解Spring MVC 62
4.1 Spring MVC特點 63
4.2 Spring MVC體系結構 63
4.2.1 Spring MVC運行流程 63
4.2.2 Handler和Controller的聯繫 66
第5章 Spring MVC組件說明 66
Spring MVC基礎 68
5.1 快速搭建Spring MVC項目 69
5.1.1 創建Maven項目 69
5.1.2 配置項目依賴 71
5.1.3 項目日誌配置 73
5.1.4 演示頁面 74
5.1.5 Spring MVC配置類 74
5.1.6 Web配置類 76
5.1.7 Controller層開發 79
5.1.8 配置Tomcat 80
5.1.9 NoClassDefFoundError-jstl異常處理 84
5.1.10 頁面演示 85
5.2 Spring MVC中的常用註解 85
5.2.1 Controller註解 85
5.2.2 RequestMapping註解 86
5.2.3 ResponseBody註解 87
5.2.4 RequestBody註解 87
5.2.5 PathVariable註解 89
5.2.6 RestController註解 90
5.2.7 CookieValue註解 90
5.2.8 RequestParam註解 90
5.2.9 InitBinder註解 91
5.3 對象與JSON或XML數據之間的轉換 92
5.3.1 對象與JSON數據之間的轉換 92
5.3.2 對象與XML數據之間的轉換 93
5.4 靜態資源映射 94
5.4.1 通過編程式配置靜態資源映射 94
5.4.2 通過 XML檔案配置靜態
5.5 資源映射 95
5.6 ControllerAdvice註解 97
第6章 深入理解Spring MVC的九大組件 100
6.1 HandlerMapping 101
6.1.1 HandlerMapping的作用....... 101
6.1.2 HandlerMapping源碼........... 101
6.1.3 HandlerMapping的初始化... 101
6.1.4 DispatcherServlet.properties檔案 103
6.1.5 RequestMappingHandler-Mapping分析 104
6.2 HandlerAdapter 107
6.2.1 HandlerAdapter的源碼 107
6.2.2 HandlerAdapter的初始化 .... 108
6.2.3 對RequestMappingHandler-Adapter的分析 109
6.3 HandlerExceptionResolver 111
6.3.1 HandlerExceptionResolver的源碼 112
6.3.2 HandlerExceptionResolver的初始化 112
6.4 ViewResolver 113
6.4.1 ViewResolver的源碼 113
6.4.2 ViewResolver的初始化 114
6.4.3 resolveViewName方法被調用的過程 115
6.4.4 對ViewResolverRegistry的分析 115
6.5 RequestToViewNameTranslator 116
6.5.1 RequestToViewNameTranslator被調用的情況 116
6.5.2 equestToViewNameTranslator的初始化 118
6.5.3 對DefaultRequestToViewName-Translator的分析 119
6.6 LocaleResolver 120
6.6.1 LocaleResolver的初始化 121
6.6.2 對AcceptHeaderLocaleReso-lver的分析 121
6.6.3 對SessionLocaleResolver的分析 122
6.6.4 MessageSource國際化資源分析 124
6.7 ThemeResolver 125
6.7.1 ThemeResolver的初始化 126
6.7.2 ThemeResolver的源碼 126
6.7.3 ThemeResolver的實現類 127
6.7.4 對ThemeSource主題資源的分析 127
6.8 MultipartResolver 128
6.8.1 MultipartResolver接口的源碼 128
6.8.2 MultipartResolver的初始化.... 129
6.8.3 對CommonsMultipartResolver的分析 129
6.9 FlashMapManager 132
6.9.1 FlashMapManager的初始化 132
6.9.2 FlashMapManager的源碼.... 133
6.9.3 對SessionFlashMapManager的分析 135
第7章 Spring MVC基礎套用 138
7.1 轉發與重定向 139
7.1.1 Spring MVC中的轉發方式 139
7.1.2 通過ViewResolver請求轉發 139
7.1.3 通過ModelAndView請求轉發 140
7.1.4 通過HttpServletRequest請求轉發 142
7.1.5 Servlet中的重定向方式 143
7.1.6 Spring MVC通過ModelAndView實現重定向 143
7.1.7 通過RedirectView對象實現重定向 145
7.1.8 轉發與重定向中的絕對路徑 146
7.2 靜態資源快取與載入GZIP資源 .....148
7.2.1 配置靜態資源的快取 148
7.2.2 通過GzipResourceResolver壓縮靜態資源 151
7.2.3 GZIP一鍵壓縮工具 152
7.3 檔案上傳與下載 155
7.3.1 檔案的上傳與註冊攔截器 155
7.3.2 通過ResponseEntity下載檔案 159
7.3.3 大檔案的下載 160
7.4 Spring MVC中多種主題的使用.....163
7.4.1 主題的配置與使用 163
7.4.2 通過SessionThemeResolver切換主題 165
7.4.3 通過Spring MVC內置攔截器切換主題 166
第8章Spring MVC核心套用 167
8.1 全局異常處理 168
8.1.1 通過HandlerExceptionResolver處理全局異常 168
8.1.2 通過SimpleMappingException-Resolver處理全局異常 171
8.4 Spring MVC國際化配置 187
8.5 總結....................................................190
第9章 MyBatis四大核心組件 .......192
9.1 MyBatis四大核心組件簡介 193
9.2 SqlSessionFactoryBuilder源碼分析 193
9.3 XMLConfigBuilder源碼分析 195
9.3.1 XMLConfigBuilder構造函式... 195
9.3.2 parse與parseConfiguration方法 196
9.3.3 loadCustomVfs方法 197
9.3.4 settingsElement方法 198
9.3.5 environmentsElement方法 201
9.3.6 typeHandlerElement方法.....202
9.3.7 mapperElement方法 203
9.4 SqlSessionFactory源碼分析 205
9.4.1 SqlSessionFactory源碼 205
9.4.2 DefaultSqlSessionFactory分析 206
9.5 SqlSession源碼分析 207
9.5.1 多參數select方法 207
9.5.2 帶參數的增、 刪、 改、 查方法 210
9.6 MapperAnnotationBuilder源碼分析 213
9.6.1 parse方法 214
9.6.2 loadXmlResource方法 215
9.6.3 parseCache方法與parseCache-Ref方法 216
9.6.4 parseStatement方法 217
第10章 MyBatis的XML配置檔案...221
10.1 MyBatis依賴 222
10.2 properties元素 222
10.3 settings元素 224
10.4 typeAliases元素 226
10.5 typeHandlers元素 227
10.6 objectFactory元素 227
10.7 environments元素 228
10.7.1 transactionManager元素....229
10.7.2 dataSource元素 229
10.8 databaseIdProvider元素 230
10.9 mappers元素 231
第11章 MyBatis的XML映射檔案...235
11.1 頂級元素簡介 236
11.2 查詢 236
11.2.1 通過select元素實現簡單查詢 236
11.2.2 sql元素在查詢時的重要作用 238
11.3 增、改、刪 239
11.3.1 insert與update處理主鍵自動生成 241
11.3.2 通過insert獲取所有對象的主鍵 241
11.3.3 通過insert獲取自增長主鍵 242
11.4 參數 243
11.4.1 安全傳參 243
11.4.2 字元串替換 244
11.5 結果集 244
11.5.1 高級結果映射 246
11.5.2 id與result元素 248
11.5.3 關聯元素 249
11.5.4 關聯的嵌套結果 249
11.5.5 集合 (一對多查詢) 252
11.5.6 集合嵌套查詢與嵌套結果 252
11.5.7 鑑別器 254
11.6 自動映射 255
11.7 快取 256
11.7.1 快取的屬性 256
11.7.2 自定義快取 257
11.8 MyBatis快取機制 258
11.8.1 一級快取 258
11.8.2 二級快取 259
11.9 定義要使用的cache的兩種方式 261
11.9.1 通過 cache元素定義 261
11.9.2 通過cache-ref元素定義 263
11.10 二級快取實例 264
11.10.1 二級快取的測試 265
11.10.2 二級快取使用原則 267
第12章 動態SQL 268
12.1 動態SQL簡介 269
12.2 if元素 269
12.3 choose元素、when元素、otherwise元素 269
12.4 trim元素、where元素、set元素 270
12.5 foreach元素 272
12.6 bind元素 273
12.7 多資料庫支持與可拔插SQL腳本語言 274
12.7.1 多資料庫廠商支持 274
12.7.2 動態SQL中的可插拔腳本語言 275
第13章 代碼生成器 276
13.1 MBG概述 277
13.1.1 MBG會生成的代碼 277
13.1.2 MBG依賴項 278
13.2 MBG快速入門 278
13.3 使用Maven運行MBG 280
13.3.1 將MBG作為Maven外掛程式使用 280
13.3.2 完整的MBG配置檔案 281
13.3.3 MBG其他配置 285
13.4 使用Java程式運行MBG 287
第14章 IoC與DI詳解 290
14.1 IoC概述 291
14.2 深入理解IoC 291
14.3 通過代碼理解IoC 292
14.4 Spring中IoC容器的實現 293
14.4.1 BeanFactory 294
14.4.2 ApplicationContext接口 297
14.5 傳統OOP和IoC的對比 298
14.6 DI與IoC的關係 299
14.7 Spring中的DI方式 302
14.7.1 Spring IoC快速入門案例 302
14.7.2 Spring容器通過XML和註解方式裝配Bean 305
14.7.3 構造方法注入 307
14.7.4 setter方法注入 310
14.7.5 接口注入 313
第15章 Spring的核心機制 315
15.1 Spring容器中的Bean 316
15.1.1 Bean的作用域 316
15.1.2 ApplicationContext初始化過程 319
15.1.3 Bean的生命周期 332
15.1.4 Spring的Bean和JavaBean比較 335
15.2 Spring中Bean的裝配 336
15.2.1 使用XML裝配Bean 336
15.2.2 使用註解裝配Bean 338
15.2.3 使用Java類裝配Bean 339
15.3 創建Bean實例的三種方式 341
15.3.1 使用構造器創建Bean實例 341
15.3.2 使用靜態工廠方法創建Bean實例 341
15.3.3 調用實例工廠方法創建Bean實例 344
15.4 載入屬性檔案 346
15.4.1 通過 <context:property- placeholder> 標記載入 ......346
15.4.2 通過 <util:properties> 標記載入 347
15.4.3 通過PropertyPlaceholderCon-figurer類載入 348
15.4.4 通過PropertySource註解載入 348
15.5 Spring條件化裝配Bean 349
15.5.1 Conditional註解源碼解析 349
15.5.2 Conditional註解的使用 350
15.5.3 ConditionContext與Annotated-TypeMetadata講解 354
15.6 Spring中的事件機制 355
15.6.1 事件驅動模型 356
15.6.2 Spring中的事件驅動模型 356
15.6.3 Spring中的事件廣播器 358
15.6.4 演示Spring的事件機制 ......358
15.7 Spring中的定時器 361
15.8 SpEL 365
15.8.1 SpEL的功能特性 365
15.8.2 SpEL的基礎套用 365
15.8.3 SpEL的原理及接口 366
15.8.4 SpEL相關語法 368
15.9 <context:annotation-config>標記 372
15.9.1 <context:annotation-config>標記的作用 372
15.9.2 <context:annotation-config>標記的源碼分析 373
第16章 Spring AOP詳解及案例分析 377
16.1 了解AOP 378
16.1.1 Spring AOP相關概念 378
16.1.2 Spring AOP核心接口和類 380
16.2 Spring AOP實例分析 387
16.2.1 用XML方式解析Spring AOP實例 387
16.2.2 用註解方式解析Spring AOP實例 390
第17章 Spring的資料庫事務管理....394
17.1 資料庫事務基礎 395
17.1.1 什麼是事務 395
17.1.2 事務的隔離模式 395
17.1.3 事務並發的問題 396
17.1.4 事務類型 398
17.2 Spring對事務管理的支持 398
17.2.1 Spring事務管理核心接口 398
17.2.2 Spring使用事務案例的準備 402
17.2.3 不使用事務進行轉賬 403
17.2.4 編程式事務處理 409
17.2.5 聲明式事務處理 410
17.3 Transactional註解.........................412
17.3.1 Transactional註解的用法 412
17.3.2 Transactional 註解的實現原理 412
17.3.3 聲明式事務實現大體分析 413
17.3.4 聲明式事務實現具體分析 424
第18章 項目設計 434
18.1 項目簡介與分析 435
18.2 模組與需求分析 435
18.2.1 模組劃分 435
18.2.2 前台模組 436
18.2.3 管理模組 436
18.3 技術及依賴分析 437
18.4 資料庫設計 437
第19章 初步開發——框架集成 ....441
19.1 框架集成簡介 442
19.2 搭建項目框架 442
19.2.1 創建Maven的Web項目 442
19.2.2 配置項目依賴 444
19.2.3 Spring和MyBatis整合配置 449
19.2.4 配置log4j與傳送日誌郵件 452
19.3 加密資料庫賬號密碼 456
19.3.1 調試與查看源碼 456
19.3.2 繼承PropertySourcesPlaceholder- Configurer類進行解密處理....458
19.3.3 繼承Properties類進行解密處理 462
19.4 快速生成資料庫實體類 464
19.4.1 集成MyBatis-Plus工具 ......464
19.4.2 自動生成Dao層和Service層代碼 469
19.5 集成Spring MVC 476
19.6 在IDEA中配置TomcatWeb項目 480
第20章 項目功能實現 484
20.1 註冊功能 485
20.1.1 接入Redis 485
20.1.2 傳送郵件配置 489
20.1.3 實現Server層與Controller層 497
20.1.4 使用Redis實現數字的原子性自增 503
20.2 系統登錄功能 505
20.2.1 用戶名或信箱登錄 505
20.2.2 使用MapStruct複製Bean 507
20.2.3 退出登錄功能 508
20.2.4 使用Redis實現Session共享 509
20.2.5 自動登錄功能 511
20.3 資源發表功能 514
20.3.1 全局異常捕獲與日誌輸出 514
20.3.2 登錄攔截功能 516
20.3.3 上傳資源檔案到本地 517
20.3.4 上傳圖片檔案到阿里雲OSS 521
20.3.5 資源發表 529
20.4 用戶相關功能 533
20.4.1 增加用戶IP記錄 533
20.4.2 用戶關注功能 534
20.4.3 用戶收藏功能 539
20.5 用戶評論功能 541
20.5.1 簡單的評論功能 541
20.5.2 評論分頁功能 543
20.5.3 評論敏感詞過濾 546
20.5.4 防範XSS攻擊 551
20.6 資源數據分頁功能 553
20.6.1 專題資源分頁數據 553
20.6.2 分類資源分頁數據 556
20.6.3 標籤資源分頁數據 557
20.6.4 最佳化程式分類、專題、標籤數據 560
20.7 交易功能 563
20.7.1 設計交易結構 563
20.7.2 實現支付功能 564
20.7.3 實現管理員登錄攔截器 571
20.7.4 實現日誌攔截器 572
附錄 576

作者簡介

陳浩翔
杭州飛鏈雲科技有限公司創始人,Java相關研發架構工作經驗6年。擁有Java相關發明專利十餘項。從事過支付行業,研發與架構的系統穩定地支撐著公司日千萬交易筆數量級的支付和對賬。 SaaS核心研發3年經驗 ,擁有SaaS相關發明專利6項,研發、架構的元數據核心與許可權系統,每日億萬級接口調用。 Java企業開發豐富的理論知識和實戰經驗。2020年CSDN部落格之星第12名,同時在一些社區擔任名譽職位。認證為CSDN部落格專家、CSDN專欄簽約作者、InfoQ簽約作者、阿里雲ACE杭州同城會會長、阿里雲社區認證專家。
厲森彪
Java相關研發架構工作經驗十餘年,帶過百人研發團隊,具有豐富的架構和研發管理經驗,曾在淘寶擔任項目經理/架構師,做過多個大幾千萬DAU產品,自主創過業做過二手交易平台,經歷幾輪融資,現在在大搜車公司擔任事業部副總裁,從事SaaS產品方向工作,對於技術和產品有較高要求,正在推進汽車產業數字文明。
石雷
擁有十多年Java領域開發及架構經驗,早年曾從事過遊戲行業、傳統軟體行業,後轉型網際網路。陸續負責過交易業務、商家業務、交易中台、支付中台、數據中台、供應鏈等不同領域的團隊,在構建大型高可用高並發的電商交易體系方面具備豐富的架構實戰經驗。現為阿里巴巴高級技術專家,負責跨境電商基礎鏈路領域。

相關詞條

熱門詞條

聯絡我們