Spring Boot源码解读与原理分析

Spring Boot源码解读与原理分析
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2023-02
版次: 1
ISBN: 9787115601377
定价: 129.80
装帧: 其他
开本: 其他
纸张: 胶版纸
页数: 436页
字数: 676千字
8人买过
  • Spring Boot是目前Java EE开发中颇受欢迎的框架之一。依托于底层Spring Framework的基础支撑,以及完善强大的特性设计,Spring Boot已成为业界流行的应用和微服务开发基础框架。
      《Spring Boot源码解读与原理分析》共14章,分为4个部分。第一部分介绍Spring Boot底层依赖的核心容器,以及底层Spring Framework的两大核心特性IOC和AOP;第二部分从底层源码角度深入剖析Spring Boot的生命周期,包括Spring Application、IOC容器、嵌入式Web容器和AOP模块的生命周期;第三部分针对项目开发中整合的主流场景,介绍场景模块中的核心装配和关键机制原理,如JDBC中的事务、Web中的核心控制器等;第四部分与Spring Boot的运行部署相关,针对不同运行场景讲解Spring Boot的启动引导方式。
      阅读《Spring Boot源码解读与原理分析》之前,读者需要先对Spring Framework和Spring Boot有基本的理解与简单的框架使用经验或项目开发经验。本书的重点是Spring Boot的设计、思想和原理,无论是对于已经有一定基础的开发者还是已熟练使用Spring Boot并希望进一步提升技能和水平的开发者,本书是他们透彻研究Spring Boot源码和原理的理想选择。 LinkedBear,Java开发工程师、底层技术研究者与分享者,倾心研究Spring技术体系多年,对Spring、Spring Boot等框架有独到的见解,拥有丰富的框架体系实践经验和架构封装经验。 第 1部分 Spring Boot底层依赖的核心容器

    第 1章 Spring Boot整体概述 3

    1.1 Spring Framework 3

    1.1.1 Spring Framework的历史 4

    1.1.2 IOC与AOP 4

    1.2 Spring Boot与Spring Framework 4

    1.3 Spring Boot的核心特性 5

    1.4 Spring Boot的体系 5

    1.5 开发第 一个Spring Boot应用 6

    1.5.1 创建项目 6

    1.5.2 编写简单代码 10

    1.6 小结 11

    第 2章 Spring Boot的自动装配 12

    2.1 组件装配 12

    2.1.1 组件 12

    2.1.2 手动装配 13

    2.1.3 自动装配 13

    2.2 Spring Framework的模块装配 14

    2.2.1 模块 14

    2.2.2 快速体会模块装配 15

    2.2.3 导入配置类 17

    2.2.4 导入ImportSelector 19

    2.2.5 导入ImportBeanDefinitionRegistrar 21

    2.2.6 扩展:DeferredImportSelector 22

    2.3 Spring Framework的条件装配 24

    2.3.1 基于Profile的装配 24

    2.3.2 基于Conditional的装配 26

    2.4 SPI机制 28

    2.4.1 JDK原生的SPI 29

    2.4.2 Spring Framework 3.2的SPI 30

    2.5 Spring Boot的装配机制 32

    2.5.1 @ComponentScan 33

    2.5.2 @SpringBootConfiguration 34

    2.5.3 @EnableAutoConfiguration 35

    2.6 WebMvc场景下的自动装配原理 42

    2.6.1 Servlet容器的装配 43

    2.6.2 DispatcherServlet的装配 46

    2.6.3 SpringWebMvc的装配 48

    2.7 小结 53

    第3章 Spring Boot的IOC容器 54

    3.1 Spring Framework的IOC容器 54

    3.1.1 BeanFactory 55

    3.1.2 ApplicationContext 66

    3.1.3 选择ApplicationContext而不是BeanFactory 74

    3.2 Spring Boot对IOC容器的扩展 75

    3.2.1 WebServerApplicationContext 75

    3.2.2 AnnotationConfigServletWebServerApplicationContext 75

    3.2.3 ReactiveWebApplicationContext 76

    3.3 选用注解驱动IOC容器的原因 76

    3.3.1 配置方式的对比 76

    3.3.2 约定大于配置下的选择 77

    3.4 Environment 77

    3.4.1 Environment概述 77

    3.4.2 Environment的结构与设计 78

    3.4.3 Environment与IOC容器的关系 80

    3.5 BeanDefinition 81

    3.5.1 理解元信息 81

    3.5.2 BeanDefinition概述 81

    3.5.3 BeanDefinition的结构与设计 82

    3.5.4 体会BeanDefinition 85

    3.5.5 BeanDefinitionRegistry 88

    3.5.6 设计BeanDefinition的意义 89

    3.6 后置处理器 89

    3.6.1 理解后置处理器 89

    3.6.2 BeanPostProcessor 90

    3.6.3 BeanPostProcessor的扩展 91

    3.6.4 BeanFactoryPostProcessor 93

    3.6.5 BeanDefinitionRegistryPostProcessor 94

    3.6.6 后置处理器对比 95

    3.7 IOC容器的启动流程 95

    3.8 小结 100

    第4章 Spring Boot的核心引导:SpringApplication 101

    4.1 总体设计 101

    4.1.1 启动失败的错误报告 101

    4.1.2 Bean的延迟初始化 103

    4.1.3 SpringApplication的定制 103

    4.1.4 Web类型推断 104

    4.1.5 监听与回调 104

    4.1.6 应用退出 106

    4.2 生命周期概述 107

    4.2.1 创建SpringApplication 107

    4.2.2 启动SpringApplication 107

    4.2.3 应用退出 108

    4.3 小结 108

    第5章 Spring Boot的AOP支持 109

    5.1 Spring Framework的AOP回顾 109

    5.1.1 AOP术语 109

    5.1.2 通知类型 110

    5.2 Spring Boot使用AOP 110

    5.3 AOP的开关:@EnableAspectJAutoProxy 111

    5.3.1 AspectJAutoProxyRegistrar 112

    5.3.2 AnnotationAwareAspectJAutoProxyCreator 114

    5.4 小结 117

    第 2部分 Spring Boot的生命周期原理分析

    第6章 Spring Boot准备容器与环境 121

    6.1 创建SpringApplication 122

    6.1.1 推断Web环境 122

    6.1.2 设置初始化器 123

    6.1.3 设置监听器 125

    6.1.4 确定主启动类 126

    6.1.5 与Spring Boot 1.x的区别 127

    6.1.6 与Spring Boot 2.4.x的区别 128

    6.2 启动SpringApplication 129

    6.2.1 前置准备 130

    6.2.2 获取SpringApplicationRunListeners 133

    6.2.3 准备运行时环境 135

    6.3 IOC容器的创建与初始化 137

    6.3.1 打印Banner 137

    6.3.2 创建IOC容器 140

    6.3.3 初始化IOC容器 142

    6.3.4 刷新IOC容器 145

    6.3.5 Spring Boot 2.4.x的新特性 145

    6.4 IOC容器刷新后的回调 148

    6.5 小结 149

    第7章 IOC容器的刷新 150

    7.1 初始化前的预处理 152

    7.1.1 初始化属性配置 152

    7.1.2 初始化早期事件的集合 154

    7.2 obtainFreshBeanFactory:初始化BeanFactory 154

    7.2.1 注解驱动的refreshBeanFactory 155

    7.2.2 XML驱动的refreshBeanFactory 155

    7.3 prepareBeanFactory:BeanFactory的预处理动作 156

    7.3.1 ApplicationContextAwareProcessor 157

    7.3.2 自动注入的支持 158

    7.3.3 ApplicationListenerDetector 159

    7.4 postProcessBeanFactory:BeanFactory的后置处理 160

    7.4.1 回调父类方法 161

    7.4.2 组件扫描&解析手动传入的配置类 164

    7.5 invokeBeanFactoryPostProcessors:执行BeanFactoryPostProcessor 164

    7.5.1 现有的后置处理器分类 165

    7.5.2 执行最高优先级的BeanDefinitionRegistryPostProcessor 165

    7.5.3 执行其他BeanDefinitionRegistryPostProcessor 166

    7.5.4 回调postProcessBeanFactory方法 167

    7.5.5 BeanFactoryPostProcessor的分类 168

    7.5.6 执行BeanFactoryPostProcessor 168

    7.5.7 重要的后置处理器:ConfigurationClassPostProcessor 169

    7.6 registerBeanPostProcessors:初始化BeanPostProcessor 185

    7.6.1 BeanPostProcessorChecker 186

    7.6.2 MergedBeanDefinitionPostProcessor被重复注册 187

    7.6.3 PriorityOrdered类型的后置处理器 188

    7.7 initMessageSource:初始化国际化组件 188

    7.8 initApplicationEventMulticaster:初始化事件广播器 190

    7.9 onRefresh:子类扩展的刷新动作 191

    7.10 registerListeners:注册监听器 191

    7.11 finishBeanFactoryInitialization:初始化剩余的单例bean对象 192

    7.11.1 beanFactory.preInstantiateSingletons 193

    7.11.2 getBean 193

    7.11.3 createBean 199

    7.11.4 doCreateBean 201

    7.11.5 SmartInitializingSingleton 215

    7.12 finishRefresh-刷新后的动作 216

    7.12.1 LifecycleProcessor 216

    7.12.2 getLifecycleProcessor().onRefresh() 217

    7.13 resetCommonCaches:清除缓存 217

    7.14 ApplicationContext初始化中的扩展点 218

    7.14.1 invokeBeanFactoryPostProcessors 218

    7.14.2 finishBeanFactoryInitialization 219

    7.15 循环依赖的解决方案 221

    7.15.1 循环依赖的产生 221

    7.15.2 循环依赖的解决模型 222

    7.15.3 基于setter/@Autowired的循环依赖 222

    7.15.4 基于构造方法的循环依赖 230

    7.15.5 基于原型Bean的循环依赖 230

    7.15.6 引入AOP的额外设计 231

    7.16 小结 232

    第8章 Spring Boot容器刷新扩展:嵌入式Web容器 233

    8.1 嵌入式Tomcat简介 233

    8.1.1 嵌入式Tomcat与普通Tomcat 234

    8.1.2 Tomcat整体架构 234

    8.1.3 Tomcat的核心工作流程 235

    8.2 Spring Boot中嵌入式容器的模型 236

    8.2.1 WebServer 236

    8.2.2 WebServerFactory 236

    8.2.3 ServletWebServerFactory和ReactiveWebServerFactory 237

    8.2.4 ConfigurableServletWebServerFactory 237

    8.3 嵌入式Web容器的初始化时机 237

    8.3.1 创建WebServer 238

    8.3.2 Web容器关闭相关的回调 241

    8.4 嵌入式Tomcat的初始化 242

    8.4.1 获取Context 243

    8.4.2 阻止Connector初始化 244

    8.4.3 启动Tomcat 244

    8.4.4 阻止Tomcat结束 246

    8.5 嵌入式Tomcat的启动 248

    8.6 小结 249

    第9章 AOP模块的生命周期 250

    9.1 @EnableAspectJAutoProxy 250

    9.2 AnnotationAwareAspectJAutoProxyCreator 252

    9.2.1 类继承结构 253

    9.2.2 初始化时机 253

    9.2.3 作用时机 254

    9.3 Advisor与切面类的收集 257

    9.3.1 收集增强器的逻辑 257

    9.3.2 收集原生增强器 258

    9.3.3 解析AspectJ切面封装增强器 259

    9.4 TargetSource的设计 266

    9.4.1 TargetSource的设计 267

    9.4.2 TargetSource的好处 267

    9.4.3 TargetSource的结构 267

    9.4.4 Spring Framework中提供的TargetSource 268

    9.5 代理对象生成的核心:wrapIfNecessary 268

    9.5.1 getAdvicesAndAdvisorsForBean 269

    9.5.2 createProxy 274

    9.6 代理对象的底层执行逻辑 277

    9.6.1 DemoService#save 277

    9.6.2 获取增强器链 278

    9.6.3 执行增强器 281

    9.6.4 jdk动态代理的执行底层 285

    9.6.5 AspectJ中通知的底层实现 287

    9.7 AOP通知的执行顺序对比 289

    9.7.1 测试代码编写 289

    9.7.2 Spring Framework 5.x的顺序 290

    9.7.3 Spring Framework 4.x的顺序 291

    9.8 小结 292

    第3部分 Spring Boot整合常用开发场景

    第 10章 Spring Boot整合JDBC 295

    10.1 Spring Boot整合JDBC项目搭建 295

    10.1.1 初始化数据库 295

    10.1.2 整合项目 296

    10.1.3 编写测试代码 296

    10.2 整合JDBC后的自动装配 297

    10.2.1 配置数据源 298

    10.2.2 创建JdbcTemplate 302

    10.2.3 配置事务管理器 303

    10.3 声明式事务的生效原理 303

    10.3.1 TransactionAutoConfiguration 303

    10.3.2 TransactionManagementConfigurationSelector 305

    10.3.3 AutoProxyRegistrar 305

    10.3.4 ProxyTransactionManagementConfiguration 307

    10.4 声明式事务的控制全流程 309

    10.4.1 CglibAopProxy#intercept 309

    10.4.2 TransactionInterceptor 310

    10.5 声明式事务的传播行为控制 319

    10.5.1 修改测试代码 320

    10.5.2 PROPAGATION_REQUIRED 321

    10.5.3 PROPAGATION_REQUIRES_NEW 327

    10.6 小结 330

    第 11章 Spring Boot整合MyBatis 332

    11.1 MyBatis框架概述 332

    11.2 Spring Boot整合MyBatis项目搭建 333

    11.3 自动装配核心 334

    11.3.1 场景启动器的秘密 334

    11.3.2 MybatisLanguageDriverAutoConfiguration 335

    11.3.3 MybatisAutoConfiguration 335

    11.4 小结 342

    第 12章 Spring Boot整合WebMvc 343

    12.1 整合WebMvc的核心自动装配 343

    12.2 WebMvc的核心组件 344

    12.2.1 DispatcherServlet 344

    12.2.2 Handler 345

    12.2.3 HandlerMapping 345

    12.2.4 HandlerAdapter 347

    12.2.5 ViewResolver 348

    12.3 @Controller控制器装配原理 349

    12.3.1 初始化RequestMapping的入口 349

    12.3.2 processCandidateBean 350

    12.3.3 detectHandlerMethods 350

    12.4 DispatcherServlet的工作全流程解析 352

    12.4.1 DispatcherServlet#service 352

    12.4.2 processRequest 353

    12.4.3 doService 354

    12.4.4 doDispatch 356

    12.4.5 DispatcherServlet工作全流程小结 372

    12.5 小结 372

    第 13章 Spring Boot整合WebFlux 374

    13.1 快速了解响应式编程与Reactor 374

    13.1.1 命令式与响应式 374

    13.1.2 概念和思想的回顾与引入 375

    13.1.3 快速体会Reactor框架 377

    13.2 快速使用WebFlux 380

    13.2.1 WebMvc的开发风格 380

    13.2.2 逐步过渡到WebFlux 381

    13.2.3 WebFlux的函数式开发 382

    13.2.4 WebMvc与WebFlux的对比 383

    13.3 WebFlux的自动装配 384

    13.3.1 ReactiveWebServerFactoryAutoConfiguration 384

    13.3.2 WebFluxAutoConfiguration 385

    13.3.3 WebFluxConfig 386

    13.3.4 EnableWebFluxConfiguration 387

    13.3.5 WebFluxConfigurationSupport 388

    13.4 DispatcherHandler的传统方式工作原理 390

    13.4.1 handle方法概览 390

    13.4.2 筛选HandlerMapping 391

    13.4.3 搜寻HandlerAdapter并执行 393

    13.4.4 返回值处理 394

    13.4.5 工作流程小结 395

    13.5 DispatcherHandler的函数式端点工作原理 396

    13.5.1 HandlerMapping的不同 396

    13.5.2 HandlerAdapter的不同 397

    13.5.3 返回值处理的不同 398

    13.5.4 工作流程小结 399

    13.6 小结 399

    第4部分 运行Spring Boot应用

    第 14章 运行Spring Boot应用 403

    14.1 部署打包的两种方式 403

    14.1.1 以可独立运行jar包的方式 403

    14.1.2 以war包的方式 404

    14.2 基于jar包的独立运行机制 405

    14.2.1 可运行jar包的前置知识 405

    14.2.2 Spring Boot的可运行jar包结构 405

    14.2.3 JarLauncher的设计及工作原理 407

    14.3 基于war包的外部Web容器运行机制 412

    14.3.1 Servlet 3.0规范中引导应用启动的说明 413

    14.3.2 Spring BootServletInitializer的作用和原理 413

    14.4 Spring Boot 2.3新特性:优雅停机 415

    14.4.1 测试优雅停机场景 416

    14.4.2 优雅停机的实现原理 417

    14.5 小结 419
  • 内容简介:
    Spring Boot是目前Java EE开发中颇受欢迎的框架之一。依托于底层Spring Framework的基础支撑,以及完善强大的特性设计,Spring Boot已成为业界流行的应用和微服务开发基础框架。
      《Spring Boot源码解读与原理分析》共14章,分为4个部分。第一部分介绍Spring Boot底层依赖的核心容器,以及底层Spring Framework的两大核心特性IOC和AOP;第二部分从底层源码角度深入剖析Spring Boot的生命周期,包括Spring Application、IOC容器、嵌入式Web容器和AOP模块的生命周期;第三部分针对项目开发中整合的主流场景,介绍场景模块中的核心装配和关键机制原理,如JDBC中的事务、Web中的核心控制器等;第四部分与Spring Boot的运行部署相关,针对不同运行场景讲解Spring Boot的启动引导方式。
      阅读《Spring Boot源码解读与原理分析》之前,读者需要先对Spring Framework和Spring Boot有基本的理解与简单的框架使用经验或项目开发经验。本书的重点是Spring Boot的设计、思想和原理,无论是对于已经有一定基础的开发者还是已熟练使用Spring Boot并希望进一步提升技能和水平的开发者,本书是他们透彻研究Spring Boot源码和原理的理想选择。
  • 作者简介:
    LinkedBear,Java开发工程师、底层技术研究者与分享者,倾心研究Spring技术体系多年,对Spring、Spring Boot等框架有独到的见解,拥有丰富的框架体系实践经验和架构封装经验。
  • 目录:
    第 1部分 Spring Boot底层依赖的核心容器

    第 1章 Spring Boot整体概述 3

    1.1 Spring Framework 3

    1.1.1 Spring Framework的历史 4

    1.1.2 IOC与AOP 4

    1.2 Spring Boot与Spring Framework 4

    1.3 Spring Boot的核心特性 5

    1.4 Spring Boot的体系 5

    1.5 开发第 一个Spring Boot应用 6

    1.5.1 创建项目 6

    1.5.2 编写简单代码 10

    1.6 小结 11

    第 2章 Spring Boot的自动装配 12

    2.1 组件装配 12

    2.1.1 组件 12

    2.1.2 手动装配 13

    2.1.3 自动装配 13

    2.2 Spring Framework的模块装配 14

    2.2.1 模块 14

    2.2.2 快速体会模块装配 15

    2.2.3 导入配置类 17

    2.2.4 导入ImportSelector 19

    2.2.5 导入ImportBeanDefinitionRegistrar 21

    2.2.6 扩展:DeferredImportSelector 22

    2.3 Spring Framework的条件装配 24

    2.3.1 基于Profile的装配 24

    2.3.2 基于Conditional的装配 26

    2.4 SPI机制 28

    2.4.1 JDK原生的SPI 29

    2.4.2 Spring Framework 3.2的SPI 30

    2.5 Spring Boot的装配机制 32

    2.5.1 @ComponentScan 33

    2.5.2 @SpringBootConfiguration 34

    2.5.3 @EnableAutoConfiguration 35

    2.6 WebMvc场景下的自动装配原理 42

    2.6.1 Servlet容器的装配 43

    2.6.2 DispatcherServlet的装配 46

    2.6.3 SpringWebMvc的装配 48

    2.7 小结 53

    第3章 Spring Boot的IOC容器 54

    3.1 Spring Framework的IOC容器 54

    3.1.1 BeanFactory 55

    3.1.2 ApplicationContext 66

    3.1.3 选择ApplicationContext而不是BeanFactory 74

    3.2 Spring Boot对IOC容器的扩展 75

    3.2.1 WebServerApplicationContext 75

    3.2.2 AnnotationConfigServletWebServerApplicationContext 75

    3.2.3 ReactiveWebApplicationContext 76

    3.3 选用注解驱动IOC容器的原因 76

    3.3.1 配置方式的对比 76

    3.3.2 约定大于配置下的选择 77

    3.4 Environment 77

    3.4.1 Environment概述 77

    3.4.2 Environment的结构与设计 78

    3.4.3 Environment与IOC容器的关系 80

    3.5 BeanDefinition 81

    3.5.1 理解元信息 81

    3.5.2 BeanDefinition概述 81

    3.5.3 BeanDefinition的结构与设计 82

    3.5.4 体会BeanDefinition 85

    3.5.5 BeanDefinitionRegistry 88

    3.5.6 设计BeanDefinition的意义 89

    3.6 后置处理器 89

    3.6.1 理解后置处理器 89

    3.6.2 BeanPostProcessor 90

    3.6.3 BeanPostProcessor的扩展 91

    3.6.4 BeanFactoryPostProcessor 93

    3.6.5 BeanDefinitionRegistryPostProcessor 94

    3.6.6 后置处理器对比 95

    3.7 IOC容器的启动流程 95

    3.8 小结 100

    第4章 Spring Boot的核心引导:SpringApplication 101

    4.1 总体设计 101

    4.1.1 启动失败的错误报告 101

    4.1.2 Bean的延迟初始化 103

    4.1.3 SpringApplication的定制 103

    4.1.4 Web类型推断 104

    4.1.5 监听与回调 104

    4.1.6 应用退出 106

    4.2 生命周期概述 107

    4.2.1 创建SpringApplication 107

    4.2.2 启动SpringApplication 107

    4.2.3 应用退出 108

    4.3 小结 108

    第5章 Spring Boot的AOP支持 109

    5.1 Spring Framework的AOP回顾 109

    5.1.1 AOP术语 109

    5.1.2 通知类型 110

    5.2 Spring Boot使用AOP 110

    5.3 AOP的开关:@EnableAspectJAutoProxy 111

    5.3.1 AspectJAutoProxyRegistrar 112

    5.3.2 AnnotationAwareAspectJAutoProxyCreator 114

    5.4 小结 117

    第 2部分 Spring Boot的生命周期原理分析

    第6章 Spring Boot准备容器与环境 121

    6.1 创建SpringApplication 122

    6.1.1 推断Web环境 122

    6.1.2 设置初始化器 123

    6.1.3 设置监听器 125

    6.1.4 确定主启动类 126

    6.1.5 与Spring Boot 1.x的区别 127

    6.1.6 与Spring Boot 2.4.x的区别 128

    6.2 启动SpringApplication 129

    6.2.1 前置准备 130

    6.2.2 获取SpringApplicationRunListeners 133

    6.2.3 准备运行时环境 135

    6.3 IOC容器的创建与初始化 137

    6.3.1 打印Banner 137

    6.3.2 创建IOC容器 140

    6.3.3 初始化IOC容器 142

    6.3.4 刷新IOC容器 145

    6.3.5 Spring Boot 2.4.x的新特性 145

    6.4 IOC容器刷新后的回调 148

    6.5 小结 149

    第7章 IOC容器的刷新 150

    7.1 初始化前的预处理 152

    7.1.1 初始化属性配置 152

    7.1.2 初始化早期事件的集合 154

    7.2 obtainFreshBeanFactory:初始化BeanFactory 154

    7.2.1 注解驱动的refreshBeanFactory 155

    7.2.2 XML驱动的refreshBeanFactory 155

    7.3 prepareBeanFactory:BeanFactory的预处理动作 156

    7.3.1 ApplicationContextAwareProcessor 157

    7.3.2 自动注入的支持 158

    7.3.3 ApplicationListenerDetector 159

    7.4 postProcessBeanFactory:BeanFactory的后置处理 160

    7.4.1 回调父类方法 161

    7.4.2 组件扫描&解析手动传入的配置类 164

    7.5 invokeBeanFactoryPostProcessors:执行BeanFactoryPostProcessor 164

    7.5.1 现有的后置处理器分类 165

    7.5.2 执行最高优先级的BeanDefinitionRegistryPostProcessor 165

    7.5.3 执行其他BeanDefinitionRegistryPostProcessor 166

    7.5.4 回调postProcessBeanFactory方法 167

    7.5.5 BeanFactoryPostProcessor的分类 168

    7.5.6 执行BeanFactoryPostProcessor 168

    7.5.7 重要的后置处理器:ConfigurationClassPostProcessor 169

    7.6 registerBeanPostProcessors:初始化BeanPostProcessor 185

    7.6.1 BeanPostProcessorChecker 186

    7.6.2 MergedBeanDefinitionPostProcessor被重复注册 187

    7.6.3 PriorityOrdered类型的后置处理器 188

    7.7 initMessageSource:初始化国际化组件 188

    7.8 initApplicationEventMulticaster:初始化事件广播器 190

    7.9 onRefresh:子类扩展的刷新动作 191

    7.10 registerListeners:注册监听器 191

    7.11 finishBeanFactoryInitialization:初始化剩余的单例bean对象 192

    7.11.1 beanFactory.preInstantiateSingletons 193

    7.11.2 getBean 193

    7.11.3 createBean 199

    7.11.4 doCreateBean 201

    7.11.5 SmartInitializingSingleton 215

    7.12 finishRefresh-刷新后的动作 216

    7.12.1 LifecycleProcessor 216

    7.12.2 getLifecycleProcessor().onRefresh() 217

    7.13 resetCommonCaches:清除缓存 217

    7.14 ApplicationContext初始化中的扩展点 218

    7.14.1 invokeBeanFactoryPostProcessors 218

    7.14.2 finishBeanFactoryInitialization 219

    7.15 循环依赖的解决方案 221

    7.15.1 循环依赖的产生 221

    7.15.2 循环依赖的解决模型 222

    7.15.3 基于setter/@Autowired的循环依赖 222

    7.15.4 基于构造方法的循环依赖 230

    7.15.5 基于原型Bean的循环依赖 230

    7.15.6 引入AOP的额外设计 231

    7.16 小结 232

    第8章 Spring Boot容器刷新扩展:嵌入式Web容器 233

    8.1 嵌入式Tomcat简介 233

    8.1.1 嵌入式Tomcat与普通Tomcat 234

    8.1.2 Tomcat整体架构 234

    8.1.3 Tomcat的核心工作流程 235

    8.2 Spring Boot中嵌入式容器的模型 236

    8.2.1 WebServer 236

    8.2.2 WebServerFactory 236

    8.2.3 ServletWebServerFactory和ReactiveWebServerFactory 237

    8.2.4 ConfigurableServletWebServerFactory 237

    8.3 嵌入式Web容器的初始化时机 237

    8.3.1 创建WebServer 238

    8.3.2 Web容器关闭相关的回调 241

    8.4 嵌入式Tomcat的初始化 242

    8.4.1 获取Context 243

    8.4.2 阻止Connector初始化 244

    8.4.3 启动Tomcat 244

    8.4.4 阻止Tomcat结束 246

    8.5 嵌入式Tomcat的启动 248

    8.6 小结 249

    第9章 AOP模块的生命周期 250

    9.1 @EnableAspectJAutoProxy 250

    9.2 AnnotationAwareAspectJAutoProxyCreator 252

    9.2.1 类继承结构 253

    9.2.2 初始化时机 253

    9.2.3 作用时机 254

    9.3 Advisor与切面类的收集 257

    9.3.1 收集增强器的逻辑 257

    9.3.2 收集原生增强器 258

    9.3.3 解析AspectJ切面封装增强器 259

    9.4 TargetSource的设计 266

    9.4.1 TargetSource的设计 267

    9.4.2 TargetSource的好处 267

    9.4.3 TargetSource的结构 267

    9.4.4 Spring Framework中提供的TargetSource 268

    9.5 代理对象生成的核心:wrapIfNecessary 268

    9.5.1 getAdvicesAndAdvisorsForBean 269

    9.5.2 createProxy 274

    9.6 代理对象的底层执行逻辑 277

    9.6.1 DemoService#save 277

    9.6.2 获取增强器链 278

    9.6.3 执行增强器 281

    9.6.4 jdk动态代理的执行底层 285

    9.6.5 AspectJ中通知的底层实现 287

    9.7 AOP通知的执行顺序对比 289

    9.7.1 测试代码编写 289

    9.7.2 Spring Framework 5.x的顺序 290

    9.7.3 Spring Framework 4.x的顺序 291

    9.8 小结 292

    第3部分 Spring Boot整合常用开发场景

    第 10章 Spring Boot整合JDBC 295

    10.1 Spring Boot整合JDBC项目搭建 295

    10.1.1 初始化数据库 295

    10.1.2 整合项目 296

    10.1.3 编写测试代码 296

    10.2 整合JDBC后的自动装配 297

    10.2.1 配置数据源 298

    10.2.2 创建JdbcTemplate 302

    10.2.3 配置事务管理器 303

    10.3 声明式事务的生效原理 303

    10.3.1 TransactionAutoConfiguration 303

    10.3.2 TransactionManagementConfigurationSelector 305

    10.3.3 AutoProxyRegistrar 305

    10.3.4 ProxyTransactionManagementConfiguration 307

    10.4 声明式事务的控制全流程 309

    10.4.1 CglibAopProxy#intercept 309

    10.4.2 TransactionInterceptor 310

    10.5 声明式事务的传播行为控制 319

    10.5.1 修改测试代码 320

    10.5.2 PROPAGATION_REQUIRED 321

    10.5.3 PROPAGATION_REQUIRES_NEW 327

    10.6 小结 330

    第 11章 Spring Boot整合MyBatis 332

    11.1 MyBatis框架概述 332

    11.2 Spring Boot整合MyBatis项目搭建 333

    11.3 自动装配核心 334

    11.3.1 场景启动器的秘密 334

    11.3.2 MybatisLanguageDriverAutoConfiguration 335

    11.3.3 MybatisAutoConfiguration 335

    11.4 小结 342

    第 12章 Spring Boot整合WebMvc 343

    12.1 整合WebMvc的核心自动装配 343

    12.2 WebMvc的核心组件 344

    12.2.1 DispatcherServlet 344

    12.2.2 Handler 345

    12.2.3 HandlerMapping 345

    12.2.4 HandlerAdapter 347

    12.2.5 ViewResolver 348

    12.3 @Controller控制器装配原理 349

    12.3.1 初始化RequestMapping的入口 349

    12.3.2 processCandidateBean 350

    12.3.3 detectHandlerMethods 350

    12.4 DispatcherServlet的工作全流程解析 352

    12.4.1 DispatcherServlet#service 352

    12.4.2 processRequest 353

    12.4.3 doService 354

    12.4.4 doDispatch 356

    12.4.5 DispatcherServlet工作全流程小结 372

    12.5 小结 372

    第 13章 Spring Boot整合WebFlux 374

    13.1 快速了解响应式编程与Reactor 374

    13.1.1 命令式与响应式 374

    13.1.2 概念和思想的回顾与引入 375

    13.1.3 快速体会Reactor框架 377

    13.2 快速使用WebFlux 380

    13.2.1 WebMvc的开发风格 380

    13.2.2 逐步过渡到WebFlux 381

    13.2.3 WebFlux的函数式开发 382

    13.2.4 WebMvc与WebFlux的对比 383

    13.3 WebFlux的自动装配 384

    13.3.1 ReactiveWebServerFactoryAutoConfiguration 384

    13.3.2 WebFluxAutoConfiguration 385

    13.3.3 WebFluxConfig 386

    13.3.4 EnableWebFluxConfiguration 387

    13.3.5 WebFluxConfigurationSupport 388

    13.4 DispatcherHandler的传统方式工作原理 390

    13.4.1 handle方法概览 390

    13.4.2 筛选HandlerMapping 391

    13.4.3 搜寻HandlerAdapter并执行 393

    13.4.4 返回值处理 394

    13.4.5 工作流程小结 395

    13.5 DispatcherHandler的函数式端点工作原理 396

    13.5.1 HandlerMapping的不同 396

    13.5.2 HandlerAdapter的不同 397

    13.5.3 返回值处理的不同 398

    13.5.4 工作流程小结 399

    13.6 小结 399

    第4部分 运行Spring Boot应用

    第 14章 运行Spring Boot应用 403

    14.1 部署打包的两种方式 403

    14.1.1 以可独立运行jar包的方式 403

    14.1.2 以war包的方式 404

    14.2 基于jar包的独立运行机制 405

    14.2.1 可运行jar包的前置知识 405

    14.2.2 Spring Boot的可运行jar包结构 405

    14.2.3 JarLauncher的设计及工作原理 407

    14.3 基于war包的外部Web容器运行机制 412

    14.3.1 Servlet 3.0规范中引导应用启动的说明 413

    14.3.2 Spring BootServletInitializer的作用和原理 413

    14.4 Spring Boot 2.3新特性:优雅停机 415

    14.4.1 测试优雅停机场景 416

    14.4.2 优雅停机的实现原理 417

    14.5 小结 419
查看详情
相关图书 / 更多
Spring Boot源码解读与原理分析
Spring Framework6开发实战 Spring+Spring Web MVC+MyBatis
肖海鹏、耿卫江、王荣芝、张天怡、张志慧
Spring Boot源码解读与原理分析
Spark大数据分析
作者
Spring Boot源码解读与原理分析
Spark入门与大数据分析实战
迟殿委 李超
Spring Boot源码解读与原理分析
Spark大数据开发(职业教育计算机系列教材)
唐春玲;周桥;陈小龙
Spring Boot源码解读与原理分析
Spring Boot+Vue前后端分离项目全栈开发实战
唐文
Spring Boot源码解读与原理分析
Spring快速入门到精通
明日科技 编著
Spring Boot源码解读与原理分析
Spring Boot 3.0开发实战
李西明;陈立为
Spring Boot源码解读与原理分析
Spark分布式处理实战
刘均 王璐烽
Spring Boot源码解读与原理分析
Spring Security原理与实战:构建安全可靠的微服务
邹炎
Spring Boot源码解读与原理分析
Spark原理深入与编程实战(微课视频版)
辛立伟;张帆;张会娟
Spring Boot源码解读与原理分析
Spring Boot 3 +Vue 3开发实战
朱建昕
Spring Boot源码解读与原理分析
Spring Cloud Alibaba核心技术与实战案例
高洪岩