互聯(lián)網(wǎng)輕量級(jí)SSM框架解密:Spring、Spring MVC、MyBatis源碼深度剖析
定 價(jià):109 元
叢書名:云時(shí)代架構(gòu)
當(dāng)前圖書已被 11 所學(xué)校薦購過!
查看明細(xì)
- 作者:李艷鵬 等
- 出版時(shí)間:2019/1/1
- ISBN:9787121359545
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP311.561
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
SSM是Spring、Spring MVC和MyBatis框架的組合,是目前Java領(lǐng)域使用非常廣泛也非常穩(wěn)定的開源Web框架。本書以SSM的核心代碼剖析為基礎(chǔ),突破Java Web研發(fā)瓶頸的束縛,選取Spring、Spring MVC和MyBatis框架中易于理解的版本,深入剖析了其中各個(gè)模塊的實(shí)現(xiàn),從代碼中挖掘常用的設(shè)計(jì)模式,為讀者理解Spring系列框架的可擴(kuò)展設(shè)計(jì)藝術(shù)提供了方法論和優(yōu)秀實(shí)踐。本書Spring源碼剖析篇基于Spring 4.3.2版本,剖析了Spring上下文、Spring AOP和Spring事務(wù)的實(shí)現(xiàn),并通過實(shí)例展示了框架陷阱的隱蔽性及學(xué)習(xí)框架原理的必要性。Spring MVC源碼剖析篇基于Spring MVC 3.0版本,這個(gè)版本比較簡(jiǎn)單、核心清晰,便于讀者理解透徹,這里主要講解其中的設(shè)計(jì)模式及可插拔的設(shè)計(jì)思路。MyBatis源碼剖析篇基于MyBatis 3.4版本,幫助讀者對(duì)SQL語言、JDBC及數(shù)據(jù)訪問方式有更深入的了解,也能看到工廠、Builder、代理、裝飾者等設(shè)計(jì)模式在MyBatis中的大量應(yīng)用。本書對(duì)于互聯(lián)網(wǎng)從業(yè)者,或者傳統(tǒng)行業(yè)的IT工程師、架構(gòu)師、技術(shù)經(jīng)理、技術(shù)總監(jiān),以及想深耕IT行業(yè)的技術(shù)人員都有很強(qiáng)的借鑒性和實(shí)用價(jià)值。
李艷鵬,高級(jí)技術(shù)專家,著有《分布式服務(wù)架構(gòu):原理、設(shè)計(jì)與實(shí)戰(zhàn)》和《可伸縮服務(wù)架構(gòu):框架與中間件》,是云時(shí)代架構(gòu)技術(shù)社區(qū)的發(fā)起者,曾經(jīng)在易寶支付、花旗銀行、甲骨文、路透社、新浪微博等大型機(jī)構(gòu)中擔(dān)任技術(shù)負(fù)責(zé)人和首席架構(gòu)師,曾專注于大規(guī)模高并發(fā)的線上和線下支付平臺(tái)的應(yīng)用架構(gòu)和技術(shù)架構(gòu)的規(guī)劃與落地,負(fù)責(zé)交易、支付、渠道、出款、風(fēng)控、對(duì)賬等核心支付系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),在移動(dòng)支付、聚合支付、合規(guī)賬戶、掃碼支付、標(biāo)記化支付等業(yè)務(wù)場(chǎng)景上有產(chǎn)品應(yīng)用架構(gòu)規(guī)劃與落地的實(shí)踐經(jīng)驗(yàn),現(xiàn)聚焦于區(qū)塊鏈創(chuàng)新應(yīng)用技術(shù)的研發(fā)領(lǐng)域。曲源,資深Java開發(fā)者,曾任美圖技術(shù)經(jīng)理、易寶支付交易系統(tǒng)技術(shù)負(fù)責(zé)人、當(dāng)當(dāng)網(wǎng)Java工程師。在電商、支付公司從業(yè)近10年,熟悉 相關(guān)領(lǐng)域的架構(gòu)規(guī)劃和系統(tǒng)研發(fā)。宋楊,愛奇藝技術(shù)產(chǎn)品中心架構(gòu)師,從事互聯(lián)網(wǎng)支付行業(yè)一線開發(fā)、架構(gòu)等工作,熟悉互聯(lián)網(wǎng)通用技術(shù)棧。
第1篇 深入剖析Spring源碼
第1章 Spring基礎(chǔ)介紹2
1.1 Spring的核心結(jié)構(gòu)2
1.2 Spring的領(lǐng)域模型6
第2章 Spring上下文和容器7
2.1 Spring上下文的設(shè)計(jì)7
2.2 Spring容器BeanFactory的設(shè)計(jì)11
2.3 Spring父子上下文與容器13
第3章 Spring加載機(jī)制的設(shè)計(jì)與實(shí)現(xiàn)18
3.1 Spring ApplicationContext的加載及源碼實(shí)現(xiàn)18
3.2 Spring XML文件標(biāo)簽加載解析及自定義27
3.3 Spring注解的加載及自動(dòng)注入31
第4章 Spring Bean探秘45
4.1 Spring Bean的定義和注冊(cè)設(shè)計(jì)45
4.2 Spring Bean的定義模型47
4.3 Spring Bean的運(yùn)行(獲取、創(chuàng)建)實(shí)現(xiàn)48
4.4 Spring Bean的依賴注入的實(shí)現(xiàn)59
4.5 Spring Bean的初始化70
第5章 Spring代理與AOP74
5.1 Spring代理的設(shè)計(jì)及JDK、CGLIB動(dòng)態(tài)代理75
5.2 Spring AOP的設(shè)計(jì)82
5.3 Spring AOP的加載和執(zhí)行機(jī)制83
5.3.1 Spring AOP的加載及源碼解析83
5.3.2 Spring AOP的創(chuàng)建執(zhí)行及源碼解析88
5.4 Spring事務(wù)管理設(shè)計(jì)及源碼101
5.5 Spring事務(wù)傳播機(jī)制115
第6章 Spring實(shí)戰(zhàn)118
6.1 對(duì)Spring重復(fù)AOP問題的分析118
6.2 Spring Bean循環(huán)依賴的問題125
第2篇 深入剖析Spring MVC源碼
第7章 MVC簡(jiǎn)介138
7.1 MVC的體系結(jié)構(gòu)和工作原理138
7.1.1 控制器139
7.1.2 視圖139
7.1.3 模型140
7.2 Web MVC的體系結(jié)構(gòu)和工作原理140
第8章 Spring Web MVC工作流142
8.1 組件及其接口142
8.1.1 DispatcherServlet143
8.1.2 處理器映射143
8.1.3 處理器適配器144
8.1.4 處理器與控制器145
8.1.5 視圖解析器145
8.1.6 視圖146
8.2 組件間的協(xié)調(diào)通信146
第9章 DispatcherServlet的實(shí)現(xiàn)148
9.1 深入剖析GenericServlet和HttpServlet150
9.1.1 HTTP和Servlet規(guī)范簡(jiǎn)介150
9.1.2 Servlet和GenericServlet詳解152
9.1.3 HttpServlet詳解152
9.2 深入剖析DispatcherServlet159
9.2.1 HttpServletBean詳解161
9.2.2 FrameworkServlet詳解162
9.2.3 DispatchServlet詳解166
9.3 根共享環(huán)境的加載182
9.3.1 基于Servlet環(huán)境監(jiān)聽器的實(shí)現(xiàn)結(jié)構(gòu)182
9.3.2 多級(jí)Spring環(huán)境的加載方式189
第10章 基于簡(jiǎn)單控制器的流程實(shí)現(xiàn)194
10.1 通過Bean名稱URL處理器映射獲取處理器執(zhí)行鏈194
10.1.1 抽象處理器映射196
10.1.2 抽象URL處理器映射199
10.1.3 抽象探測(cè)URL處理器映射209
10.1.4 Bean名稱URL處理器映射210
10.2 通過處理器適配器把請(qǐng)求轉(zhuǎn)接給處理器211
10.2.1 簡(jiǎn)單控制處理適配器的設(shè)計(jì)211
10.2.2 表單控制器處理HTTP請(qǐng)求的流程212
10.3 對(duì)控制器類體系結(jié)構(gòu)的深入剖析214
10.3.1 Web內(nèi)容產(chǎn)生器215
10.3.2 抽象控制器類217
10.3.3 基本命令控制器218
10.3.4 抽象表單控制器222
10.3.5 簡(jiǎn)單表單控制器229
第11章 基于注解控制器的流程實(shí)現(xiàn)230
11.1 默認(rèn)注解處理器映射的實(shí)現(xiàn)230
11.2 注解處理器適配器的架構(gòu)設(shè)計(jì)237
11.3 深入剖析注解控制器的處理流程238
11.3.1 解析處理器方法241
11.3.2 解析處理器方法的參數(shù)253
11.3.3 綁定、初始化領(lǐng)域模型和管理領(lǐng)域模型272
11.3.4 調(diào)用處理器方法278
11.3.5 處理方法返回值和隱式模型到模型或視圖的映射281
11.3.6 如何更新模型數(shù)據(jù)286
第12章 基于HTTP請(qǐng)求處理器實(shí)現(xiàn)RPC288
12.1 深入剖析RPC客戶端的實(shí)現(xiàn)289
12.2 深入剖析RPC服務(wù)端的實(shí)現(xiàn)299
第13章 深入剖析處理器映射、處理器適配器及處理器的實(shí)現(xiàn)311
13.1 處理器映射的實(shí)現(xiàn)架構(gòu)311
13.1.1 處理器映射實(shí)現(xiàn)類312
13.1.2 處理器映射抽象類313
13.1.3 對(duì)處理器映射類的代碼剖析315
13.2 處理器適配器的實(shí)現(xiàn)架構(gòu)322
13.3 深入剖析處理器325
13.3.1 簡(jiǎn)單控制器325
13.3.2 注解控制器339
13.3.3 HTTP請(qǐng)求處理器342
13.4 攔截器的實(shí)現(xiàn)架構(gòu)344
第14章 視圖解析和視圖顯示353
14.1 基于URL的視圖解析器和視圖353
14.1.1 內(nèi)部資源視圖解析器和內(nèi)部資源視圖365
14.1.2 瓦塊視圖解析器和瓦塊視圖371
14.1.3 模板視圖解析器和模板視圖373
14.1.4 XSLT視圖解析器和XSLT視圖377
14.2 更多的視圖解析器378
14.2.1 Bean名稱視圖解析器378
14.2.2 內(nèi)容選擇視圖解析器379
14.2.3 資源綁定視圖解析器383
14.2.4 XML視圖解析器385
第3篇 深入剖析MyBatis源碼
第15章 MyBatis介紹388
15.1 MyBatis的歷史388
15.2 MyBatis子項(xiàng)目389
15.3 MyBatis的自身定位389
15.3.1 JPA持久化框架390
15.3.2 MyBatis的功能390
15.3.3 MyBatis與JPA的異同390
15.4 MyBatis的架構(gòu)391
15.4.1 模塊391
15.4.2 MyBatis的項(xiàng)目包392
第16章 構(gòu)建階段394
16.1 關(guān)鍵類394
16.2 關(guān)鍵時(shí)序395
16.3 構(gòu)建的入口:SqlSessionFactoryBuilder和SqlSessionFactory396
16.4 配置(Configuration)和配置構(gòu)造器(XmlConfigBuilder)397
16.4.1 XmlConfigBuilder的初始化397
16.4.2 完整的mybatis-3-config.dtd399
16.4.3 解析配置文件構(gòu)建Configuration配置399
16.5 SQL簡(jiǎn)介418
16.6 SQL映射的構(gòu)建419
16.6.1 通過XML定義的SQL Mapper419
16.6.2 Configuration類中與SQL Mapping相關(guān)的類420
16.6.3 XmlMapperBuilder是如何工作的421
16.6.4 映射注解器定義的SQL Mapper438
16.6.5 小結(jié)440
第17章 執(zhí)行階段441
17.1 關(guān)鍵類441
17.2 關(guān)鍵接口及默認(rèn)實(shí)現(xiàn)初始化442
17.2.1 SqlSession及其關(guān)聯(lián)類的構(gòu)建過程442
17.2.2 StatementHandler語句處理器446
17.3 DQL語句是如何執(zhí)行的448
17.3.1 查詢接口448
17.3.2 關(guān)鍵時(shí)序449
17.3.3 程序執(zhí)行查詢的入口:DefaultSqlSession#selectList(statement)450
17.3.4 生成執(zhí)行語句:getMappedStatement()450
17.3.5 執(zhí)行器查詢:Executor#query()451
17.3.6 JDBC執(zhí)行語句:SimpleStatementHandler#query()455
17.3.7 結(jié)果集處理:DefaultResultSetHandler#handlerResultSets()455
17.4 DML語句是如何執(zhí)行的460
17.4.1 操作接口460
17.4.2 關(guān)鍵時(shí)序460
17.4.3 程序執(zhí)行更新的入口:DefaultSqlSession#update()461
17.4.4 執(zhí)行器執(zhí)行方法:Executor#update()461
17.4.5 SQL語句執(zhí)行:SimpleStatementHandler#update()464
17.4.6 結(jié)果集主鍵邏輯:Jdbc3KeyGenerator#processAfter()464
17.5 小結(jié)466
第18章 專題特性解析467
18.1 動(dòng)態(tài)SQL支持467
18.1.1 XmlScriptBuilder解析配置467
18.1.2 NodeHandler構(gòu)建SqlNode樹468
18.1.3 SqlNode處理SQL語句471
18.2 MyBatis的緩存支持477
18.2.1 本地緩存478
18.2.2 二級(jí)緩存482
18.3 結(jié)果集支持:Object、List、Map和Cursor491
18.4 自定義擴(kuò)展點(diǎn)及接口496
第19章 作為中間件如何承上啟下498
19.1 MyBatis與底層的JDBC498
19.1.1 java.sql.DataSource498
19.1.2 java.sql.Connection499
19.1.3 java.sql.Statement500
19.1.4 java.sql.Resultset502
19.2 MyBatis的主流集成方式502
19.2.1 mybatis-spring簡(jiǎn)介502
19.2.2 Spring對(duì)JDBC的支持502
19.2.3 mybatis-spring與Spring504