新書推薦:
《
养育男孩:官方升级版
》
售價:NT$
230.0
《
小原流花道技法教程
》
售價:NT$
500.0
《
少女映像室 唯美人像摄影从入门到实战
》
售價:NT$
505.0
《
詹姆斯·伍德系列:不负责任的自我:论笑与小说(“美国图书评论奖”入围作品 当代重要文学批评家詹姆斯·伍德对“文学中的笑与喜剧”的精湛研究)
》
售價:NT$
398.0
《
武当内家散手
》
售價:NT$
230.0
《
诛吕:“诸吕之乱”的真相与吕太后时期的权力结构
》
售價:NT$
454.0
《
炙野(全2册)
》
售價:NT$
356.0
《
女人的胜利
》
售價:NT$
254.0
|
編輯推薦: |
适读人群 :十年沉淀之作,手写Spring精华思想,21万 学员听过在线课,超强实战技术升级指南,囊括源码、设计思想、架构思维、实战案例、开发经验,Java架构师成长必备
★《Spring 5核心原理与30个类手写实战》对应在线课程有21万 学员听过,付费学员有1.3万
★《Spring 5核心原理与30个类手写实战》作者Tom老师有10余年Java开发经验,对Spring有深入研究及独特见解
★本书几乎涵盖在Spring应用中可能遇到的所有问题,核心原理(IoC、DI、AOP、MVC)、高仿手写、数据访问等
★深度解析Spring 5的原理与新特性,从环境准备、顶层结构设计、数据访问等方面一步步推导出Spring设计原理
★通过本书你可以:
--看源码不再晕车,轻松找到入口。
--系统学习设计思想,提高解决问题的效率。
--培养架构思维能力,自驱学习能力。
--用30个类提炼出Spring核心的精华思想,并保证功能可用。
--从不一样的角度分析Spring经典高频面试题。
--了解Spring 5 的新特性。
--为深入了解Spring Boot做铺垫。
|
內容簡介: |
1996年,Java还只是一个新兴的、初出茅庐的编程语言。2004年3月24日Spring正式对外发布1.0版本。我在2009年开始接触Spring2.0版本,从此爱不释手。Spring的出现,恰如其名开启了全世界Java程序员的春天。如今,Spring已然成为一个生态,使用Spring简直就是一种享受。本书将结合本人多年的Spring使用经验,整理珍藏多年的学习笔记,采用类关系图和代码片段的形式,加以中文注释,通俗、生动、全面深入地剖析了Spring源码的重要细节。同时,本书也作为咕泡学院Java VIP高级课程的教案。要想练就"降龙十八掌,先得修炼内功。本书用从设计模式开始讲解,希望可以帮助大家更好地理解Spring,让大家知其然,且知其所以然。
|
關於作者: |
谭勇德(Tom)10余年Java开发经验。咕泡学院联合创始人。在大型IT公司担任过CTO、系统架构师。精通Java语言、JS、CSS、AS、PHP等;负责过多个大型分布式系统的微服务架构的技术改造;多年以来对Spring框架有深入研究及独特见解;开发过多套企业内部UI框架和ORM框架。热衷于分享经验,共同进步。不只做一个技术者,更要做一个思考者。
|
目錄:
|
第1篇 Spring内功心法
第1章 软件架构设计原则 2
1.1开闭原则2
1.2依赖倒置原则4
1.3单一职责原则7
1.4接口隔离原则 10
1.5迪米特原则 12
1.6里氏替换原则 14
1.7合成复用原则 19
1.8设计原则总结 20
第2章 Spring中常用的设计模式21
2.1为什么要从设计模式开始 21
2.1.1写出优雅的代码 22
2.1.2更好地重构项目 24
2.1.3经典框架都在用设计模式解决问题 36
2.2工厂模式详解 36
2.2.1工厂模式的由来 36
2.2.2简单工厂模式 37
2.2.3工厂方法模式 41
2.2.4抽象工厂模式 43
2.2.5利用工厂模式重构的实践案例 47
2.3单例模式详解 53
2.3.1单例模式的应用场景 53
2.3.2饿汉式单例模式 53
2.3.3懒汉式单例模式 54
2.3.4反射破坏单例 60
2.3.5序列化破坏单例 61
2.3.6注册式单例模式 68
2.3.7线程单例实现ThreadLocal 74
2.3.8单例模式小结 75
2.4原型模式详解 75
2.4.1原型模式的应用场景 75
2.4.2浅克隆 77
2.4.3深克隆 79
2.4.4克隆破坏单例模式 81
2.4.5clone方法的源码 82
2.5代理模式详解 82
2.5.1代理模式的应用场景 82
2.5.2静态代理 83
2.5.3动态代理 88
2.5.4代理模式与Spring 107
2.5.5静态代理和动态代理的本质区别 108
2.5.6代理模式的优缺点 109
2.6委派模式详解 109
2.6.1委派模式的定义及应用场景 109
2.6.2委派模式在源码中的体现 111
2.7策略模式详解 .114
2.7.1策略模式的应用场景 114
2.7.2用策略模式实现选择支付方式的业务场景 .114
2.7.3策略模式在JDK源码中的体现 122
2.7.4策略模式的优缺点 125
2.7.5委派模式与策略模式综合应用 125
2.8模板模式详解 129
2.8.1模板模式的应用场景 129
2.8.2利用模板模式重构JDBC操作业务场景 132
2.8.3模板模式在源码中的体现 136
2.8.4模板模式的优缺点 138
2.9适配器模式详解139
2.9.1适配器模式的应用场景 139
2.9.2重构第三方登录自由适配的业务场景141
2.9.3适配器模式在源码中的体现 149
2.9.4适配器模式的优缺点 153
2.10装饰者模式详解 153
2.10.1装饰者模式的应用场景 153
2.10.2装饰者模式和适配器模式对比 163
2.10.3装饰者模式在源码中的应用 163
2.10.4装饰者模式的优缺点 165
2.11观察者模式详解 165
2.11.1观察者模式的应用场景 165
2.11.2观察者模式在源码中的应用 175
2.11.3基于Guava API轻松落地观察者模式 176
2.11.4观察者模式的优缺点 177
2.12各设计模式的总结与对比 177
2.12.1GoF 23种设计模式简介 177
2.12.2设计模式之间的关联关系 178
2.12.3Spring中常用的设计模式 182
2.13Spring中的编程思想总结 183
第2篇 Spring环境预热
第3章 Spring的前世今生186
3.1一切从Bean开始 187
3.2Spring的设计初衷 188
3.3BOP编程伊始 188
3.4理解BeanFactory 189
3.5AOP编程理念 189
第4章 Spring 5系统架构191
4.1核心容器 192
4.2AOP和设备支持192
4.3数据访问与集成193
4.4Web组件 194
4.5通信报文 194
4.6集成测试 194
4.7集成兼容 194
4.8各模块之间的依赖关系 194
第5章 Spring版本命名规则 196
5.1常见软件的版本命名 196
5.2语义化版本命名通行规则 197
5.3商业软件中常见的修饰词 197
5.4软件版本号使用限定 198
5.5Spring版本命名规则 199
第6章 Spring源码下载及构建技巧200
6.1Spring 5源码下载 200
6.2基于Gradle的源码构建技巧 201
6.3Gradle构建过程中的坑 207
第3篇 Spring核心原理
第7章 用300行代码手写提炼Spring核心原理210
7.1自定义配置 210
7.1.1配置application.properties文件 210
7.1.2配置web.xml文件 210
7.1.3自定义注解 211
7.1.4配置注解 212
7.2容器初始化 213
7.2.1实现1.0版本 213
7.2.2实现2.0版本 216
7.2.3实现3.0版本 223
7.3运行效果演示 227
第8章 一步一步手绘Spring IoC运行时序图228
8.1Spring核心之IoC容器初体验 228
8.1.1再谈IoC与DI 228
8.1.2Spring核心容器类图 229
8.1.3Web IoC容器初体验 232
8.2基于XML的IoC容器的初始化 237
8.2.1寻找入口 238
8.2.2获得配置路径 238
8.2.3开始启动 240
8.2.4创建容器 242
8.2.5载入配置路径 243
8.2.6分配路径处理策略 244
8.2.7解析配置文件路径 247
8.2.8开始读取配置内容 249
8.2.9准备文档对象 250
8.2.10分配解析策略 251
8.2.11将配置载入内存 252
8.2.12载入<bean>元素 257
8.2.13载入<property>元素 261
8.2.14载入<property>子元素 264
8.2.15载入<list>子元素 266
8.2.16分配注册策略 267
8.2.17向容器注册 267
8.3基于注解的IoC初始化 270
8.3.1注解的前世今生 270
8.3.2定位Bean扫描路径 271
8.3.3读取注解的元数据 273
8.3.4扫描指定包并解析为BeanDefinition 277
8.3.5注册注解BeanDefinition 283
8.4IoC容器初始化小结 285
第9章 一步一步手绘Spring DI运行时序图287
9.1Spring自动装配之依赖注入 287
9.1.1依赖注入发生的时间 287
9.1.2寻找获取Bean的入口 288
9.1.3开始实例化 293
9.1.4选择Bean实例化策略 297
9.1.5执行Bean实例化 299
9.1.6准备依赖注入 301
9.1.7解析属性依赖注入规则 306
9.1.8注入赋值 310
9.2Spring IoC容器中那些鲜为人知的细节 314
9.2.1关于延时加载 314
9.2.2关于FactoryBean和BeanFactory 317
9.2.3再述autowiring 322
第10章 一步一步手绘Spring AOP运行时序图326
10.1Spring AOP初体验 326
10.1.1再述Spring AOP应用场景 326
10.1.2AOP中必须明白的几个概念 327
10.1.3使用Spring AOP的两种方式 329
10.1.4切入点表达式的配置规则 333
10.2Spring AOP源码分析 334
10.2.1寻找入口 334
10.2.2选择代理策略 338
10.2.3调用代理方法 341
10.2.4触发通知 347
第11章 一步一步手绘Spring MVC运行时序图352
11.1初探Spring MVC请求处理流程 352
11.2Spring MVC九大组件 353
11.2.1HandlerMapping 353
11.2.2HandlerAdapter 353
11.2.3HandlerExceptionResolver 354
11.2.4ViewResolver 354
11.2.5RequestToViewNameTranslator 354
11.2.6LocaleResolver 354
11.2.7ThemeResolver 355
11.2.8MultipartResolver 355
11.2.9FlashMapManager 355
11.3Spring MVC源码分析 355
11.3.1初始化阶段 356
11.3.2运行调用阶段 359
11.4Spring MVC优化建议 367
第4篇 Spring手写实战
第12章 环境准备370
12.1IDEA集成Lombok插件 370
12.1.1安装插件 370
12.1.2配置注解处理器 373
12.1.3使用插件 374
12.2从Servlet到ApplicationContext 375
12.3准备基础配置376
12.3.1application.properties配置.377
12.3.2pom.xml配置 377
12.3.3web.xml配置 378
12.3.4GPDispatcherServlet 378
第13章 IoC顶层结构设计 380
13.1Annotation(自定义配置)模块 380
13.1.1@GPService 380
13.1.2@GPAutowired 381
13.1.3@GPController 381
13.1.4@GPRequestMapping 382
13.1.5@GPRequestParam 382
13.2core(顶层接口)模块 382
13.2.1GPFactoryBean 382
13.2.2GPBeanFactory 383
13.3beans(配置封装)模块 383
13.3.1GPBeanDefinition 383
13.3.2GPBeanWrapper 384
13.4context(IoC容器)模块 385
13.4.1GPAbstractApplicationContext 385
13.4.2GPDefaultListableBeanFactory 385
13.4.3GPApplicationContext385
13.4.4GPBeanDefinitionReader 388
13.4.5GPApplicationContextAware 391
第14章 完成DI模块的功能392
14.1从getBean方法开始 393
14.2GPBeanPostProcessor 395
第15章 完成MVC模块的功能396
15.1MVC顶层设计 396
15.1.1GPDispatcherServlet 396
15.1.2GPHandlerMapping 402
15.1.3GPHandlerAdapter 403
15.1.4GPModelAndView 406
15.1.5GPViewResolver 406
15.1.6GPView 407
15.2业务代码实现409
15.2.1IQueryService 409
15.2.2QueryService 410
15.2.3IModifyService 410
15.2.4ModifyService 411
15.2.5MyAction 412
15.2.6PageAction 413
15.3定制模板页面414
15.3.1first.html 414
15.3.2404.html 414
15.3.3500.html 415
15.4运行效果演示415
第16章 完成AOP代码织入 417
16.1基础配置 .
|
內容試閱:
|
★序言
在1996年,Java还只是一门新兴的、初出茅庐的编程语言。2004年3月24日,Spring正式对外发布1.0版本。我在2009年开始接触Spring 2.0,从此爱不释手。Spring的出现,恰如其名,开启了全世界Java程序员的春天。如今,Spring已然成为一个生态,使用Spring简直就是一种享受。
本书结合我多年的Spring使用经验,整理了珍藏多年的Spring学习笔记,采用类图和代码片段的形式,加以中文注释,通俗、生动、全面、深入地剖析了Spring源码的重要细节。要想练就降龙十八掌,先得修炼内功。本书从设计模式开始讲解,以帮助大家更好地理解Spring,让大家知其然,且知其所以然。
如果你现在的工作经验与应有的能力无法匹配,
如果你在自学路上找不到方向,
如果你现在是初级程序员,想往高级程序员晋级,
如果你希望成为架构师,
本书都能帮到你。
编写本书旨在使大家进入不一样的思维境界,书中个人观点若有不妥之处,恳望纠正!
编写本书旨在使大家进入不一样的思维境界,手写源码不是为了重复造轮子,也不是为了装高大上,其实只是我推荐给大家的一种学习方式。
书中个人观点若有不妥之处,恳望纠正!
★关于我
为什么说我来自文艺界?
我自幼爱好书法和美术,长了一双能书会画的手,而且手指又长又白,因此以前的艺名叫玉手藝人。中学期间,曾获市级书法竞赛一等奖,校园美术竞赛一等奖,校园征文比赛二等奖。担任过学生会宣传部长,负责校园黑板报、校园刊物的编辑、排版、设计。
2008年参加工作后,做过家具建模、平面设计等工作,亲自设计了咕泡学院的Logo。做讲师之后,给自己起了一个跟姓氏谐音的英文名字Tom,江湖人称编程界写字写得最好的、书法界编程最牛的文艺汤。
我的技术生涯
我的IT技术生涯应该算是从2009年开始的,在此之前做过UI设计,做过前端网页,到2009年才真正开始参与Java后台开发。在这里要感谢所有帮助过我入门编程的同事和老师。从2010年至2014年担任过项目组长、项目经理、架构师、技术总监,对很多的开源框架建立了自己的独特见解。我会习惯性地用形象思维来理解抽象世界。譬如:看到二进制0和1,我会想到《周易》中的两仪阴和阳;看到颜色值用RGB表示,我会想到美术理论中的太阳光折射三原色;下班回家看到炒菜流程,我会想到模板方法模式;坐公交车看到学生卡、老人卡、爱心卡,我会想到策略模式;等等。大家看到的这本书,很多地方都融入了这种形象思维。
为什么写书?
其实一开始我没想过要写书,写书的初衷主要是满足学员的诉求。大家认为我个人的学习方法、思维模式、教学方式通俗易懂,很容易让人接受,但是通过视频形式传播受众有限,学员建议我把这些宝贵的经验以纸质书的形式奉献给大家,这样定会给社会带来更大的价值。
借此机会,特别感谢责任编辑董英及电子社的团队成员为本书审稿纠错;感谢我老婆在无数个加班的夜晚给我默默的支持;感谢咕泡学院的学员给本书内容提出宝贵的修改意见。
谭勇德(Tom)
2019年5月 于 长沙
|
|