猜你喜欢
Spring Boot编程思想(核心篇)(限量版亲笔签名书签 随机发售)

Spring Boot编程思想(核心篇)(限量版亲笔签名书签 随机发售)

书籍作者:小马哥 ISBN:9787121360398
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:7326
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

  《Spring Boot编程思想(核心篇)》是《Spring Boot 编程思想》的核心篇,开篇总览Spring Boot核心特性,接着讨论自动装配(Auto-Configuration)与SpringApplication。全书的讨论以Spring Boot为中心,议题发散至Spring技术栈、JSR及Java。希望透过全局的视角,帮助读者了解Spring Boot变迁的历程;经过多方的比较,帮助读者理解Spring Boot特性的原理;整合标准的规范,帮助读者掌握Spring Boot设计的哲学。

  《Spring Boot编程思想(核心篇)》适合对Spring Boot感兴趣的读者阅读。

作者简介

小马哥,Java劝退师,Apache和Spring Cloud等知名开源架构成员.

编辑推荐
本书全名为《Spring Boot编程思想(核心篇》》,以Spring Boot 2.0为讨论的主线,讨论的范围将涵盖 Spring Boot 1.x的所有版本,以及所关联的Spring Framework版本,致力于:
  场景分析——掌握技术选型;
  系统学习——拒绝浅尝辄止;
  重视规范——了解发展趋势;
  源码解读——理解设计思想;
  实战演练——巩固学习成果。
前言
非常感谢您阅读本书,在成长道路上,我们从此不再孤单。
  大约在三年前,我有幸参与全集团微服务架构的演进及基础设施的构建,在此期间痛苦和受益并存。二○一六年十二月,经朋友引荐,作为“SFDC2016杭州开发者大会”的嘉宾,进行了一场名为“微服务实践之路”的演讲,从此正式开始了我的微服务布道师之路。次年三月,segmentfault“讲堂”栏目上线,我再次受邀,作为Java讲师。同年六月二日,“Java微服务实践”系列讲座正式直播,我主讲SpringBoot和SpringCloud。无独有偶,当月正好我工作满十周年,也萌生了著书的意向,计划写一本关于SpringBoot微服务开发实践的书籍,希望借此机会与诸君分享我的微服务实践经验。然而,随后的变故将此念头变为了现实。当月九日上午,正值当差,父亲传来一通电话,告知外婆于八点左右过世,听此噩耗,悲从中来,不可断绝。即刻带着身怀六甲的妻子,启程回湘。
  外婆一直陪伴着我的成长,直到我远赴杭州求职,才分隔两地。现如今祖孙二人天各一方,生死茫茫,无处话凄凉,子欲养而亲不待的痛楚莫过于此。我曾向上天祷告,愿她能安享西方极乐。若非外婆的离世,我绝对不会有坚定意志和足够勇气来完成此书,书籍的内容也不会有颠覆性的变化,讨论的议题从过去的“SpringBoot微服务开发实践”逐渐转变为“SpringBoot编程思想”。希望竭尽所能,将技术积累、学习方法、实战经验,以及所思所想和盘托出。每当自己午夜梦回,脑海中浮现外婆的容貌时,总会潸然泪下,所有的思想动摇和行为慵懒立即烟消云散。外婆是虔诚的佛教徒,平日乐善好施。从小耳濡目染的我也尽一点绵薄之力,将书籍五成以上的稿费作为公益基金,支持贫困地区的青少年教育,并且不定期地公开账目信息,供广大读者监督。这或许杯水车薪,但仍希望他们能够感到一丝温暖。
  祸兮福所倚,福兮祸所伏,生死轮回,自然之理。外婆去世后的两个月,我的儿子降临人间。作为一名新晋的父亲,自然会以更高的标准来要求自己,对书籍的质量同样趋于严苛,将早期已完成的部分“付之一炬”,推倒重来,内容篇幅剧增。作为我儿的表率,著书只是“立言”的开始,捐赠作为“立德”的发端,而“立行”则需身体力行,持之以恒。或许“著作等身”是一种不错的选择,然而现代科技的进步,尤其是文字载体的革新,要做到这一点,难度实在不小。不过,“为者常成,行者常至”,实现从“小马哥”到“马三立”先生的华丽转身并非遥不可及。
  已故南京大学历史系教授高华先生曾引述凯斯·詹京斯的观点,“历史乃论述过去,但绝不等于过去”。既然是论述,那么或多或少会存在偏差,不但受限于论述者的知识、能力及记忆等主观因素,而且取决于当时的时空环境。为了遵照原著,在功能特性的介绍上,本书将引述官方文档的英文原文,并做出适当的解释。由于文档的编写者或许不是代码的实现者,即使是实现者本人,也难免会站在自己的立场和高度,抑或章节安排及文字组织等诸多因素影响阅读和理解。因此,针对官方文档语焉不详的部分,本书将补充说明;对其错误的结论,将加以修正。由于本人能力和水平的局限,不敢妄言理解“格物致知”的奥义,难免有主观臆断和谬论之处,且仅一家之言,供诸君参考,切莫将此奉为圭臬,书云亦云,不假思索。老子有言,“上士闻道,勤而行之”,希望读者能学以致用,若能在实践中激发出创新的灵感,善莫大焉。
  最后,借此机会,由衷地感谢我的太太,没有她背后默默地付出,我不会有如此多的精力投入,更无法专注写作。同时,向陈晓猛编辑致敬,他是一位谦谦君子,极富耐心,在书籍编写的过程中,给予我不少的帮助和鼓励。再次向各位朋友送上我诚挚的歉意,由于个人的原因,使得书籍出版时间一再跳票。
  小马哥
  公元二○一九年一月于杭州
目录
第1部分 总览Spring Boot
第1章 初览Spring Boot 2
1.1 Spring Framework时代 2
1.2 Spring Boot简介 3
1.3 Spring Boot的特性 5
1.4 准备运行环境 5
1.4.1 装配JDK 8 5
1.4.2 装配Maven 6
1.4.3 装配IDE(集成开发环境) 8
第2章 理解独立的Spring应用 9
2.1 创建Spring Boot应用 10
2.1.1 命令行方式创建Spring Boot应用 11
2.1.2 图形化界面创建Spring Boot应用 21
2.1.3 创建Spring Boot应用可执行JAR 29
2.2 运行Spring Boot应用 31
2.2.1 执行Spring Boot应用可执行JAR 32
2.2.2 Spring Boot应用可执行JAR资源结构 32
2.2.3 FAT JAR和WAR执行模块——spring-boot-loader 36
2.2.4 JarLauncher的实现原理 40
第3章 理解固化的Maven依赖 58
3.1 spring-boot-starter-parent与spring-boot-dependencies简介 58
3.2 理解spring-boot-starter-parent与spring-boot- dependencies 61
第4章 理解嵌入式Web容器 70
4.1 嵌入式Servlet Web容器 71
4.1.1 Tomcat作为嵌入式Servlet Web容器 72
4.1.2 Jetty作为嵌入式Servlet Web容器 77
4.1.3 Undertow作为嵌入式Servlet Web容器 80
4.2 嵌入式Reactive Web容器 82
4.2.1 UndertowServletWebServer作为嵌入式Reactive Web容器 82
4.2.2 UndertowWebServer作为嵌入式Reactive Web容器 84
4.2.3 WebServerInitializedEvent 91
4.2.4 Jetty作为嵌入式Reactive Web容器 93
4.2.5 Tomcat作为嵌入式Reactive Web容器 94
第5章 理解自动装配 96
5.1 理解@SpringBootApplication注解语义 97
5.2 @SpringBootApplication属性别名 103
5.3 @SpringBootApplication标注非引导类 107
5.4 @EnableAutoConfiguration激活自动装配 108
5.5 @SpringBootApplication“继承”@Configuration CGLIB提升特性 110
5.6 理解自动配置机制 112
5.7 创建自动配置类 116
第6章 理解Production- Ready特性 119
6.1 理解Production-Ready一般性定义 120
6.2 理解Spring Boot Actuator 123
6.3 Spring Boot Actuator Endpoints 124
6.4 理解“外部化配置 129
6.5 理解“规约大于配置” 132
6.6 小马哥有话说 134
6.6.1 Spring Boot作为微服务中间件 134
6.6.2 Spring Boot作为Spring Cloud基础设施 135
6.7 下一站:走向自动装配 135
第2部分 走向自动装配
第7章 走向注解驱动编程(Annotation-Driven) 138
7.1 注解驱动发展史 138
7.1.1 注解驱动启蒙时代:Spring Framework 1.x 138
7.1.2 注解驱动过渡时代:Spring Framework 2.x 139
7.1.3 注解驱动黄金时代:Spring Framework 3.x 142
7.1.4 注解驱动完善时代:Spring Framework 4.x 146
7.1.5 注解驱动当下时代:Spring Framework 5.x 151
7.2 Spring核心注解场景分类 152
7.3 Spring注解编程模型 154
7.3.1 元注解(Meta-Annotations) 154
7.3.2 Spring模式注解(Stereotype Annotations) 155
7.3.3 Spring组合注解(Composed Annotations) 187
7.3.4 Spring注解属性别名和覆盖(Attribute Aliases and Overrides) 195
第8章 Spring注解驱动设计模式 225
8.1 Spring @Enable模块驱动 225
8.1.1 理解@Enable模块驱动 225
8.1.2 自定义@Enable模块驱动 226
8.1.3 @Enable模块驱动原理 236
8.2 Spring Web自动装配 250
8.2.1 理解Web自动装配 250
8.2.2 自定义Web自动装配 254
8.2.3 Web自动装配原理 258
8.3 Spring条件装配 270
8.3.1 理解配置条件装配 271
8.3.2 自定义配置条件装配 274
8.3.3 配置条件装配原理 277
第9章 Spring Boot自动装配 292
9.1 理解Spring Boot自动装配 295
9.1.1 理解@EnableAutoConfiguration 296
9.1.2 优雅地替换自动装配 298
9.1.3 失效自动装配 298
9.2 Spring Boot自动装配原理 299
9.2.1 @EnableAutoConfiguration读取候选装配组件 301
9.2.2 @EnableAutoConfiguration排除自动装配组件 305
9.2.3 @EnableAutoConfiguration过滤自动装配组件 307
9.2.4 @EnableAutoConfiguration自动装配事件 313
9.2.5 @EnableAutoConfiguration自动装配生命周期 317
9.2.6 @EnableAutoConfiguration排序自动装配组件 324
9.2.7 @EnableAutoConfiguration自动装配BasePackages 332
9.3 自定义Spring Boot自动装配 337
9.3.1 自动装配Class命名的潜规则 338
9.3.2 自动装配package命名的潜规则 338
9.3.3 自定义Spring Boot Starter 340
9.4 Spring Boot条件化自动装配 346
9.4.1 Class条件注解 347
9.4.2 Bean条件注解 358
9.4.3 属性条件注解 370
9.4.4 Resource条件注解 376
9.4.5 Web应用条件注解 391
9.4.6 Spring表达式条件注解 397
9.5 小马哥有话说 401
9.6 下一站:理解SpringApplication 402
第3部分 理解SpringApplication
第10章 SpringApplication初始化阶段 405
10.1 SpringApplication构造阶段 405
10.1.1 理解SpringApplication主配置类 406
10.1.2 SpringApplication的构造过程 410
10.1.3 推断Web应用类型 411
10.1.4 加载Spring应用上下文初始化器(ApplicationContextInitializer) 412
10.1.5 加载Spring应用事件监听器(ApplicationListener) 415
10.1.6 推断应用引导类 416
10.2 SpringApplication配置阶段 417
10.2.1 自定义SpringApplication 417
10.2.2 调整SpringApplication设置 417
10.2.3 增加SpringApplication配置源 420
10.2.4 调整Spring Boot外部化配置 423
第11章 SpringApplication运行阶段 425
11.1 SpringApplication准备阶段 425
11.1.1 理解SpringApplicationRunListeners 426
11.1.2 理解SpringApplicationRunListener 428
11.1.3 理解Spring Boot事件 431
11.1.4 理解Spring事件/监听机制 432
11.1.5 理解Spring Boot事件/监听机制 492
11.1.6 装配ApplicationArguments 509
11.1.7 准备ConfigurableEnvironment 512
11.1.8 创建Spring应用上下文(ConfigurableApplicationContext) 512
11.1.9 Spring应用上下文运行前准备 516
11.2 Spring应用上下文启动阶段 537
11.3 Spring应用上下文启动后阶段 539
11.3.1 afterRefresh方法签名的变化 540
11.3.2 afterRefresh方法语义的变化 541
11.3.3 Spring Boot事件ApplicationStartedEvent语义的变化 543
11.3.4 执行CommandLineRunner和ApplicationRunner 548
第12章 SpringApplication结束阶段 550
12.1 SpringApplication正常结束 550
12.2 SpringApplication异常结束 555
12.2.1 Spring Boot异常处理 556
12.2.2 错误分析报告器——FailureAnalysisReporter 562
12.2.3 自定义实现FailureAnalyzer和FailureAnalysisReporter 564
12.2.4 Spring Boot 2.0重构handleRunFailure和reportFailure方法 566
12.2.5 Spring Boot 2.0的SpringBootExceptionReporter接口 567
第13章 Spring Boot应用退出 571
13.1 Spring Boot应用正常退出 572
13.1.1 ExitCodeGenerator Bean生成退出码 572
13.1.2 ExitCodeGenerator Bean退出码使用场景 576
13.2 Spring Boot应用异常退出 580
13.2.1 ExitCodeGenerator异常使用场景 582
13.2.2 ExitCodeExceptionMapper Bean映射异常与退出码 587
13.2.3 退出码用于SpringApplication异常结束 589
13.3 小马哥有话说 594
13.4 下一站:运维篇 596
产品特色