互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis源码深度剖析

《互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis源码深度剖析》

  • 出版社:电子工业出版社
  • ISBN:9787121359545
  • 版次:1
  • 商品编码:12534456
  • 品牌:博文视点
  • 包装:平装
  • 丛书名:云时代架构系列
  • 开本:16
  • 出版时间:2019-03-01
  • 用纸:胶版纸
  • 页数:528
  • 字数:740000
基本介绍书籍目录点评信息
  • 书籍内容

    SSM 是Spring、Spring MVC 和MyBatis 框架的组合,是目前Java 领域使用非常广泛也非常稳定的开源Web 框架。《互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis源码深度剖析》以SSM 的核心代码剖析为基础,突破Java Web 研发瓶颈的束缚,选取Spring、SpringMVC 和MyBatis 框架中易于理解的版本,深入剖析了其中各个模块的实现,从代码中挖掘常用的设计模式,为读者理解Spring 系列框架的可扩展设计艺术提供了方法论和优秀实践。
    《互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis源码深度剖析》Spring 源码剖析篇基于Spring 4.3.2 版本,剖析了Spring 上下文、Spring AOP 和Spring 事务的实现,并通过实例展示了框架陷阱的隐蔽性及学习框架原理的必要性。Spring MVC 源码剖析篇基于SpringMVC 3.0 版本,这个版本比较简单、核心清晰,便于读者理解透彻,这里主要讲解其中的设计模式及可插拔的设计思路。MyBatis 源码剖析篇基于MyBatis 3.4 版本,帮助读者对SQL 语言、JDBC 及数据访问方式有更深入的了解,也能看到工厂、Builder、代理、装饰者等设计模式在MyBatis 中的大量应用。
    《互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis源码深度剖析》对于互联网从业者,或者传统行业的IT 工程师、架构师、技术经理、技术总监,以及想深耕IT行业的技术人员都有很强的借鉴性和实用价值。

    编辑推荐

    适读人群 :本书对于互联网从业者,或者传统行业的IT工程师、架构师、技术经理、技术总监,以及想深耕IT行业的技术人员都有很强的借鉴性和实用价值。
    Java EE互联网轻量级SSM框架(Spring MVC+Spring+MyBatis)源码新鲜解密!
    本书后援会大咖有:
    《深入分布式缓存》作者右军
    公众号“程序员小灰”作者魏梦舒
    Spring Cloud中国创始人、《重新定义Spring Cloud实战》作者许进
    《程序员的成长课》作者安晓辉
    《深入理解Spring Cloud与微服务构建》作者方志朋
    苏宁易购高级工程师汪华风
    百度研发工程师孟一凡
    本书为云时代架构系列丛书暨《分布式服务架构:原理、设计与实战》《可伸缩服务架构:框架与中间件》之后的又一惊世力作!

    作者简介

    李艳鹏,高级技术专家,著有《分布式服务架构:原理、设计与实战》和《可伸缩服务架构:框架与中间件》,是“云时代架构”技术社区的发起者,曾经在易宝支付、花旗银行、甲骨文、路透社、新浪微博等大型机构中担任技术负责人和首席架构师,曾专注于大规模高并发的线上和线下支付平台的应用架构和技术架构的规划与落地,负责交易、支付、渠道、出款、风控、对账等核心支付系统的设计与实现,在移动支付、聚合支付、合规账户、扫码支付、标记化支付等业务场景上有产品应用架构规划与落地的实践经验,现聚焦于区块链创新应用技术的研发领域。
    曲源,资深Java开发者,曾任美图技术经理、易宝支付交易系统技术负责人、当网Java工程师。在电商、支付公司从业近10年,熟悉 相关领域的架构规划和系统研发。
    宋杨,爱奇艺技术产品中心架构师,从事互联网支付行业一线开发、架构等工作,熟悉互联网通用技术栈。
  • 第1篇 深入剖析Spring源码
    第1章 Spring基础介绍 2
    1.1 Spring的核心结构 2
    1.2 Spring的领域模型 6
    第2章 Spring上下文和容器 7
    2.1 Spring上下文的设计 7
    2.2 Spring容器BeanFactory的设计 11
    2.3 Spring父子上下文与容器 13
    第3章 Spring加载机制的设计与实现 18
    3.1 Spring ApplicationContext的加载及源码实现 18
    3.2 Spring XML文件标签加载解析及自定义 27
    3.3 Spring注解的加载及自动注入 31
    第4章 Spring Bean探秘 45
    4.1 Spring Bean的定义和注册设计 45
    4.2 Spring Bean的定义模型 47
    4.3 Spring Bean的运行(获取、创建)实现 48
    4.4 Spring Bean的依赖注入的实现 59
    4.5 Spring Bean的初始化 70
    第5章 Spring代理与AOP 74
    5.1 Spring代理的设计及JDK、CGLIB动态代理 75
    5.2 Spring AOP的设计 82
    5.3 Spring AOP的加载和执行机制 83
    5.3.1 Spring AOP的加载及源码解析 83
    5.3.2 Spring AOP的创建执行及源码解析 88
    5.4 Spring事务管理设计及源码 101
    5.5 Spring事务传播机制 115
    第6章 Spring实战 118
    6.1 对Spring重复AOP问题的分析 118
    6.2 Spring Bean循环依赖的问题 125
    第2篇 深入剖析Spring MVC源码
    第7章 MVC简介 138
    7.1 MVC的体系结构和工作原理 138
    7.1.1 控制器 139
    7.1.2 视图 139
    7.1.3 模型 140
    7.2 Web MVC的体系结构和工作原理 140
    第8章 Spring Web MVC工作流 142
    8.1 组件及其接口 142
    8.1.1 DispatcherServlet 143
    8.1.2 处理器映射 143
    8.1.3 处理器适配器 144
    8.1.4 处理器与控制器 145
    8.1.5 视图解析器 145
    8.1.6 视图 146
    8.2 组件间的协调通信 146
    第9章 DispatcherServlet的实现 148
    9.1 深入剖析GenericServlet和HttpServlet 150
    9.1.1 HTTP和Servlet规范简介 150
    9.1.2 Servlet和GenericServlet详解 152
    9.1.3 HttpServlet详解 152
    9.2 深入剖析DispatcherServlet 159
    9.2.1 HttpServletBean详解 161
    9.2.2 FrameworkServlet详解 162
    9.2.3 DispatchServlet详解 166
    9.3 根共享环境的加载 182
    9.3.1 基于Servlet环境监听器的实现结构 182
    9.3.2 多级Spring环境的加载方式 189
    第10章 基于简单控制器的流程实现 194
    10.1 通过Bean名称URL处理器映射获取处理器执行链 194
    10.1.1 抽象处理器映射 196
    10.1.2 抽象URL处理器映射 199
    10.1.3 抽象探测URL处理器映射 209
    10.1.4 Bean名称URL处理器映射 210
    10.2 通过处理器适配器把请求转接给处理器 211
    10.2.1 简单控制处理适配器的设计 211
    10.2.2 表单控制器处理HTTP请求的流程 212
    10.3 对控制器类体系结构的深入剖析 214
    10.3.1 Web内容产生器 215
    10.3.2 抽象控制器类 217
    10.3.3 基本命令控制器 218
    10.3.4 抽象表单控制器 222
    10.3.5 简单表单控制器 229
    第11章 基于注解控制器的流程实现 230
    11.1 默认注解处理器映射的实现 230
    11.2 注解处理器适配器的架构设计 237
    11.3 深入剖析注解控制器的处理流程 238
    11.3.1 解析处理器方法 241
    11.3.2 解析处理器方法的参数 253
    11.3.3 绑定、初始化领域模型和管理领域模型 272
    11.3.4 调用处理器方法 278
    11.3.5 处理方法返回值和隐式模型到模型或视图的映射 281
    11.3.6 如何更新模型数据 286
    第12章 基于HTTP请求处理器实现RPC 288
    12.1 深入剖析RPC客户端的实现 289
    12.2 深入剖析RPC服务端的实现 299
    第13章 深入剖析处理器映射、处理器适配器及处理器的实现 311
    13.1 处理器映射的实现架构 311
    13.1.1 处理器映射实现类 312
    13.1.2 处理器映射抽象类 313
    13.1.3 对处理器映射类的代码剖析 315
    13.2 处理器适配器的实现架构 322
    13.3 深入剖析处理器 325
    13.3.1 简单控制器 325
    13.3.2 注解控制器 339
    13.3.3 HTTP请求处理器 342
    13.4 拦截器的实现架构 344
    第14章 视图解析和视图显示 353
    14.1 基于URL的视图解析器和视图 353
    14.1.1 内部资源视图解析器和内部资源视图 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 内容选择视图解析器 379
    14.2.3 资源绑定视图解析器 383
    14.2.4 XML视图解析器 385
    第3篇 深入剖析MyBatis源码
    第15章 MyBatis介绍 388
    15.1 MyBatis的历史 388
    15.2 MyBatis子项目 389
    15.3 MyBatis的自身定位 389
    15.3.1 JPA持久化框架 390
    15.3.2 MyBatis的功能 390
    15.3.3 MyBatis与JPA的异同 390
    15.4 MyBatis的架构 391
    15.4.1 模块 391
    15.4.2 MyBatis的项目包 392
    第16章 构建阶段 394
    16.1 关键类 394
    16.2 关键时序 395
    16.3 构建的入口:SqlSessionFactoryBuilder和SqlSessionFactory 396
    16.4 配置(Configuration)和配置构造器(XmlConfigBuilder) 397
    16.4.1 XmlConfigBuilder的初始化 397
    16.4.2 完整的mybatis-3-config.dtd 399
    16.4.3 解析配置文件构建Configuration配置 399
    16.5 SQL简介 418
    16.6 SQL映射的构建 419
    16.6.1 通过XML定义的SQL Mapper 419
    16.6.2 Configuration类中与SQL Mapping相关的类 420
    16.6.3 XmlMapperBuilder是如何工作的 421
    16.6.4 映射注解器定义的SQL Mapper 438
    16.6.5 小结 440
    第17章 执行阶段 441
    17.1 关键类 441
    17.2 关键接口及默认实现初始化 442
    17.2.1 SqlSession及其关联类的构建过程 442
    17.2.2 StatementHandler语句处理器 446
    17.3 DQL语句是如何执行的 448
    17.3.1 查询接口 448
    17.3.2 关键时序 449
    17.3.3 程序执行查询的入口:DefaultSqlSession#selectList(statement) 450
    17.3.4 生成执行语句:getMappedStatement() 450
    17.3.5 执行器查询:Executor#query() 451
    17.3.6 JDBC执行语句:SimpleStatementHandler#query() 455
    17.3.7 结果集处理:DefaultResultSetHandler#handlerResultSets() 455
    17.4 DML语句是如何执行的 460
    17.4.1 操作接口 460
    17.4.2 关键时序 460
    17.4.3 程序执行更新的入口:DefaultSqlSession#update() 461
    17.4.4 执行器执行方法:Executor#update() 461
    17.4.5 SQL语句执行:SimpleStatementHandler#update() 464
    17.4.6 结果集主键逻辑:Jdbc3KeyGenerator#processAfter() 464
    17.5 小结 466
    第18章 专题特性解析 467
    18.1 动态SQL支持 467
    18.1.1 XmlScriptBuilder解析配置 467
    18.1.2 NodeHandler构建SqlNode树 468
    18.1.3 SqlNode处理SQL语句 471
    18.2 MyBatis的缓存支持 477
    18.2.1 本地缓存 478
    18.2.2 二级缓存 482
    18.3 结果集支持:Object、List、Map和Cursor 491
    18.4 自定义扩展点及接口 496
    第19章 作为中间件如何承上启下 498
    19.1 MyBatis与底层的JDBC 498
    19.1.1 java.sql.DataSource 498
    19.1.2 java.sql.Connection 499
    19.1.3 java.sql.Statement 500
    19.1.4 java.sql.Resultset 502
    19.2 MyBatis的主流集成方式 502
    19.2.1 mybatis-spring简介 502
    19.2.2 Spring对JDBC的支持 502
    19.2.3 mybatis-spring与Spring 504
  • 精彩书评

    开源运动在国内越来越深入人心,有不少程序员通过学习优良的开源项目源码获益。本书抽丝剥茧地分析了Spring、Spring MVC、MyBatis项目,值得初学者和有一定经验的朋友参考。
    ——公众号“技术琐话”、《深入分布式缓存》作者 右军
    SSM是每一位Java后端程序员都必须掌握的基础框架,本书深入浅出、如抽丝剥茧一般地剖析Spring、Spring MVC、MyBatis等框架的运行机理,非常难得。
    ——公众号“程序员小灰”作者 魏梦舒
    SSM是Java软件开发人员必须掌握的框架,本书主要对SSM的源码设计和工作原理进行深度剖析,以循循善诱的方式讲解,能够帮助开发者快速掌握其工作原理,完善自己的知识体系。
    ——Spring Cloud中国创始人、《重新定义Spring Cloud实战》作者 许进(xujin.org)
    本书全面系统地介绍了Spring、Spring MVC、MyBatis的内在工作原理,通过读源码的方式带我们学习SSM关键组件的设计和应用,能真正加深我们对SSM的认知,对我们更好地使用SSM开发应用有非常大的帮助。
    ——《程序员的成长课》作者 安晓辉
    本书以源码形式讲解SSM知识,由浅入深、步步为营、精细全面,是一本非常棒的SSM源码书。
    ——《深入理解Spring Cloud与微服务构建》作者 方志朋
    本书对Spring的核心容器、面向切面编程思想、事务机制等,对Spring MVC的核心组件、映射机制、通信机制等,还对MyBatis的构建、执行过程、动态SQL特性等,进行了大篇幅的专题论述,抽丝剥茧、层层深入,能让读者知其然,也知其所以然。
    ——宁易购高级工程师 汪华风
    如何使用设计模式?如何合理划分模块?如何设计一级缓存和二级缓存?如何手写单例模式?这些在SSM的源码中都有涉及。本书能帮助我们快速学习SSM源码,并减少技术进阶中的许多烦恼。
    ——百度研发工程师 孟一凡
    推荐序一
    很高兴能为艳鹏的新书写序,之前一直与艳鹏合作写书,非常佩服其知识深度和广度,以及对写作持之以恒的态度。
    这是一本非常难得的SSM源码书。SSM框架非常流行,掌握这些技术是大势所趋,但是想要成为SSM专家却并不容易,而阅读本书是一个很好的捷径。
    SSM,是Spring+Spring MVC+MyBatis的缩写,是继SSH之后,目前比较主流的Java EE企业级框架,适用于搭建各种大型的企业级应用系统。Spring依赖注入DI来管理各层的组件,使用AOP(面向切面编程)管理事务、日志、权限等。Spring MVC代表Model(模型)、View(视图)、Controller(控制)接收外部请求并进行分发和处理。MyBatis 是基于JDBC的框架,主要用来操作数据库,并且将业务实体和数据表联系起来。
    本书在核心源码分析和企业运用上,由浅入深、由易到难地进行系统分析和讲解,涉及Spring、Spring MVC和MyBatis的设计理念和整体架构、容器的基本实现、标签的解析、Bean的加载、容器的功能扩展、IoC、AOP、事务、Spring消息服务等内容,能很好地指导读者使用SSM编写企业级应用,并针对在编写代码的过程中如何优化代码给出切实可行的建议,从而帮助读者全面提升实战能力。
    本书语言简洁,示例丰富,可帮助读者迅速掌握使用SSM进行开发所需的各种技能,适用于有一定Java编程经验或者想学习SSM的读者,还适用于Java开发人员、测试人员等。
    高级架构师、《分布式服务架构:原理、设计与实战》《可伸缩服务架构:框架与中间件》主要作者 杨彪
    推荐序二
    在互联网软件开发领域,Java作为工业生产语言,常年蝉联TOBLE排行榜榜首。良好的社区活跃度和广泛的从业基础,也推动着Java的蓬勃发展,涌现出一批又一批的优秀框架。
    在早期,程序员依靠Struts+DAO层打天下,大都经历过学习EL和手拼SQL的苦日子。Spring在发布后很快就在社区流行,尽管是否使用EJB是当时Java圈备受争议的话题,但SSH三件套最终发展成为企业应用的必选项。
    进入移动互联网时代后,随着前后端分离、微服务等技术的冲击,不管是进行大规模服务化部署,还是进行小作坊快速上线,SSM逐渐成为事实上的业界标准。程序员面试必被问到SSM的实现原理、架构设计,似乎不啃上几遍源码,都不好意思跟面试官交流。
    在面试“造火箭”、工作“螺丝钉”的大环境下,很多程序员虽然对这些框架使用得非常娴熟,但对底层原理及架构设计缺少足够的积累与认知,知其然却不知其所以然。面对复杂的类库继承关系、纯英文的源码及注释,很多工程师在学习时遇到重重障碍,我当时也将Tomcat源码读了3遍,但每每都很难打个通关。
    如何帮助程序员快速读懂框架源码,熟悉其背后的设计哲学,掌握其实现上的技巧,既能在面对高阶面试官时侃侃而谈,又能在实际工作中灵活运用,而不是一次次鼓起勇气,却又在源码的漩涡中退却呢?
    本书分3篇对SSM做了深入的源码剖析。每篇都先介绍其框架的主要优点,在互联网开发中的功能定位及模块划分;进而对各个模块进行抽丝剥茧的分析并且给出核心类库的UML图,同时对关键代码进行注释、解读,为读者呈现框架的精华部分;最后结合一个实战案例,对企业生产中的优秀实践进行复盘。
    本书作者都是业内有多年实际操作经验的专家,在互联网领域积累了大量实战开发经验。本书是他们知识和经验的总结,是他们智慧与理念的结晶,相信各位读者可以通过本书解决源码阅读的痛点,迅速吃透SSM,在工作中真正做到深入浅出、言必有据。
    爱奇艺技术产品中心高级技术经理、支付中心技术负责人 张冲
    推荐序三
    随着互联网的飞速发展,从项目迭代到框架更新的速度之快都让人应接不暇,互联网人能做的就是快速跟进,而抓住纷繁复杂事务的本质和规律,会让我们走得更好。
    软件是一个密切关注实践的领域,就像我们研究很多设计模式及设计思想,学习源码也是我们提升实践能力的好方式。而企业级应用至今很难绕开B/S结构,无论是在PC端还是在手机端,Spring这样的开源框架都是经典的核心解决方案,并且Spring Boot、Spring Cloud等框架都有着很深的影响力,在Java软件工程实现领域是很难绕开的核心框架。
    我读过Spring的IoC、AOP及MVC,至今仍受益良多。好的框架能让你知道过去、现在和未来,Spring可以算其中一个。
    我发现本书抓住了中高级Java工程师的一些痛点并给出了很好的解决方案。
    (1)高屋建瓴。框架基础及领域模型才是一个框架的灵魂。本书深入浅出地阐释了灵魂思想,使框架的能力及发展轨迹有章可循。
    (2)重点突出。Spring的核心功能全部突出,包括IoC、AOP、MVC及相关的RPC调用等。一个经典框架很难面面俱到,但是人们用得顺手的核心功能,一定是千锤百炼出来的。Spring的核心设计模式在本书中都有重点阐释。
    (3)注重系统化。作者花了较大的篇幅在MyBatis上,这也是本书的一大亮点。作者深入浅出地将SQL映射、SQL解析、执行器、缓存机制等深层次内容呈现给我们,在面临自动化SQL生成及各种异构数据库适应的时候,很多延伸框架及解决方案就已经在我们的脑海中了。
    程序员在自我修炼的过程中,若想获得超乎寻常的视野,则需要扎实地了解一下过去和现在,需要能够站在开发这些框架的大师角度去审视软件工程领域的优秀实践。这需要大量富有奉献、分享精神的作者引领我们前行,很高兴本书的作者们欣承此责。希望本书作者们能出更多这样的书,满足广大开源爱好者的强烈发展诉求。
    新生支付有限公司副总裁 王志成
微信公众号

热门文章

更多