新書推薦:
《
透过器物看历史(全6册)
》
售價:HK$
490.6
《
我在台北故宫博物院读名画
》
售價:HK$
109.8
《
尼罗河往事:古埃及文明4000年
》
售價:HK$
76.2
《
一个人·谁也不是·十万人(诺贝尔文学奖得主反思自我的巅峰之作)
》
售價:HK$
54.9
《
重写晚明史(全5册 精装)
》
售價:HK$
781.8
《
汉末晋初之际政治研究
》
售價:HK$
132.2
《
强者破局:资治通鉴成事之道
》
售價:HK$
80.6
《
鸣沙丛书·鼎革:南北议和与清帝退位
》
售價:HK$
121.0
|
編輯推薦: |
Java EE互联网轻量级SSM框架(Spring MVC Spring MyBatis)源码新鲜解密
本书后援会大咖有:
《深入分布式缓存》作者右军
公众号程序员小灰作者魏梦舒
Spring Cloud中国创始人、《重新定义Spring Cloud实战》作者许进
《程序员的成长课》作者安晓辉
《深入理解Spring Cloud与微服务构建》作者方志朋
苏宁易购高级工程师汪华风
百度研发工程师孟一凡
本书为云时代架构系列丛书暨《分布式服务架构:原理、设计与实战》《可伸缩服务架构:框架与中间件》之后的又一惊世力作!
|
內容簡介: |
SSM是Spring、Spring MVC和MyBatis框架的组合,是目前Java领域使用非常广泛也非常稳定的开源Web框架。本书以SSM的核心代码剖析为基础,突破Java Web研发瓶颈的束缚,选取Spring、Spring MVC和MyBatis框架中易于理解的版本,深入剖析了其中各个模块的实现,从代码中挖掘常用的设计模式,为读者理解Spring系列框架的可扩展设计艺术提供了方法论和优秀实践。
本书Spring源码剖析篇基于Spring 4.3.2版本,剖析了Spring上下文、Spring AOP和Spring事务的实现,并通过实例展示了框架陷阱的隐蔽性及学习框架原理的必要性。Spring MVC源码剖析篇基于Spring MVC 3.0版本,这个版本比较简单、核心清晰,便于读者理解透彻,这里主要讲解其中的设计模式及可插拔的设计思路。MyBatis源码剖析篇基于MyBatis 3.4版本,帮助读者对SQL语言、JDBC及数据访问方式有更深入的了解,也能看到工厂、Builder、代理、装饰者等设计模式在MyBatis中的大量应用。
本书对于互联网从业者,或者传统行业的IT工程师、架构师、技术经理、技术总监,以及想深耕IT行业的技术人员都有很强的借鉴性和实用价值。
|
目錄:
|
第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#selectListstatement................................ 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
|
內容試閱:
|
SSM是Spring、Spring MVC和MyBatis框架的组合,是目前Java领域使用非常广泛也非常稳定的开源Web框架,具有易搭建、开箱即用、配置丰富、扩展度高、运行稳定、开源社区活跃等优点。
本书以SSM的核心代码剖析为基础,突破Java Web研发瓶颈的束缚,选取Spring、Spring MVC和MyBatis框架中易于理解的版本,深入剖析了其中各个模块的实现,从代码中挖掘常用的设计模式,为读者理解Spring系列框架的可扩展设计艺术提供了方法论和优秀实践。
软件是一个密切关注实践的领域,源码是我们提升实践能力的优质学习资源,我们学习了各种设计模式,最终需要在源码中进行落地。当然,我们也需要从优秀的源码中挖掘设计模式及设计模式的应用场景,学习其中的设计艺术。
本书Spring源码剖析篇基于Spring 4.3.2版本,剖析了Spring上下文、Spring AOP和Spring事务的实现,并通过实例展示了框架陷阱的隐蔽性及学习框架原理的必要性。
Spring MVC源码剖析篇基于Spring MVC 3.0版本,这个版本相对简单、核心清晰,便于读者理解透彻,并主要讲解其中的设计模式及可插拔的设计思路。
MyBatis源码剖析篇基于MyBatis 3.4版本。轻量化、易集成和SQL资源易管理等特性为MyBatis带来了大量的用户,本篇致力于使读者对SQL语言、JDBC及数据访问方式有更深入的了解,也能看到工厂、Builder、代理、装饰者等设计模式在MyBatis中的大量应用。
我们在实际项目中会用到很多中间件,在搭建大型项目工程的时候,多数开发人员主要关注业务逻辑的实现,甚至不关心核心的非功能需求的质量,许多框架高级特性也经常被忽略,导致项目质量不过关。本书通过源码剖析的方式,带领读者挖掘优秀框架的经典设计,窥探框架中高级特性的实现方式,让开源爱好者和应用开发者快速了解SSM框架的内部设计细节、设计思路、编程技巧及高级功能特性等内容,为在实际项目中更加熟练地使用框架并巧妙地避开框架内的陷阱提供帮助。
本书对于互联网从业者,或者传统行业的IT工程师、架构师、技术经理、技术总监,以及想深耕IT行业的技术人员都有很强的借鉴性和实用价值。
|
|