目录
第1章 初识 Spring Boot 1
1.1 Spring Boot源码编译 1
1.1.1 Spring Boot 源码获取 1
1.1.2 Spring Boot 源码导入IDEA 2
1.2 Spring Boot 测试环境的搭建 5
1.3 Spring Boot 编译后可能遇到的问题 6
本章小结 7
第2章 Spring Boot 启动流程分析 8
2.1 SpringApplication.run方法简述 8
2.2 SpringApplication构造方法分析 9
2.2.1 WebApplicationType.deduceFromClasspath方法分析 11
2.2.2 getBootstrapRegistryInitializersFromSpringFactories方法分析 11
2.2.3 getSpringFactoriesInstances方法分析 12
2.2.4 createSpringFactoriesInstances 方法分析 12
2.2.5 deduceMainApplicationClass方法分析 13
2.3 run方法分析 14
2.3.1 createBootstrapContext 方法分析 16
2.3.2 prepareEnvironment 方法分析 17
2.3.3 configureIgnoreBeanInfo 方法分析 21
2.3.4 printBanner 方法分析 21
2.3.5 prepareContext方法分析 22
2.3.6 refreshContext方法分析 26
2.3.7 callRunners 方法分析 27
2.4 SpringApplicationRunListeners 分析 27
本章小结 28
第3章 ApplicationContextFactory 分析 29
3.1 ApplicationContextFactory 初识 29
3.2 AnnotationConfigServletWebServerApplicationContext 分析 30
3.3 AnnotationConfigReactiveWebServerApplicationContext 分析 35
3.4 引导上下文 36
本章小结 38
第4章 Spring Boot 中的ApplicationContextInitializer 39
4.1 ParentContextApplicationContextInitializer 分析 39
4.2 ConditionEvaluationReportLoggingListener 分析 41
4.3 ServerPortInfoApplicationContextInitializer 分析 43
4.4 DelegatingApplicationContextInitializer 分析 43
4.5 ServletContextApplicationContextInitializer 分析 45
4.6 SharedMetadataReaderFactoryContextInitializer 分析 45
4.7 RSocketPortInfoApplicationContextInitializer 分析 46
4.8 RestartScopeInitializer 分析 47
4.9 ConfigurationWarningsApplicationContextInitializer 分析 47
4.10 ConfigFileApplicationContextInitializer 分析 50
4.11 ContextIdApplicationContextInitializer 分析 51
本章小结 54
第5章 应用配置文件加载分析 55
5.1 YamlPropertySourceLoader 分析 55
5.2 PropertiesPropertySourceLoader 分析 56
5.3 ConfigDataLoader初识 57
5.3.1 SubversionConfigDataLoader分析 58
5.3.2 ConfigTreeConfigDataLoader分析 59
5.3.3 StandardConfigDataLoader分析 60
5.4 ConfigDataLocationResolver分析 62
5.4.1 SubversionConfigDataLocationResolver分析 62
5.4.2 StandardConfigDataLocationResolver分析 63
5.4.3 ConfigTreeConfigDataLocationResolver分析 64
5.5 ConfigDataLoaders 分析 64
5.6 ConfigDataLocationResolvers 分析 66
5.7 ConfigDataImporter 分析 67
5.8 ConfigDataEnvironmentContributor分析 69
5.9 ConfigDataEnvironmentContributors 分析 70
5.10 EnvironmentPostProcessorApplicationListener 分析 74
5.11 EnvironmentPostProcessor 分析 76
5.11.1 CloudFoundryVcapEnvironmentPostProcessor 分析 77
5.11.2 ConfigDataEnvironmentPostProcessor分析 78
5.12 ConfigDataEnvironment分析 79
5.13 application配置文件加载过程分析 80
本章小结 85
第6章 Spring Boot中条件相关源码分析 86
6.1 Spring Boot中条件注解介绍 86
6.2 SpringBootCondition分析 87
6.2.1 getClassOrMethodName 方法分析 87
6.2.2 logOutcome 方法分析 88
6.2.3 recordEvaluation方法分析 88
6.2.4 ConditionOutcome 分析 89
6.3 ConditionEvaluationReport 分析 89
6.3.1 ConditionEvaluationReport获取分析 90
6.3.2 unconditionalClasses数据初始化 90
6.3.3 outcomes初始化 94
6.4 Spring Boot中条件接口的实现分析 96
6.4.1 FilteringSpringBootCondition 分析 96
6.4.2 OnBeanCondition分析 97
6.4.3 OnClassCondition分析 103
6.4.4 OnWebApplicationCondition分析 107
6.4.5 OnCloudPlatformCondition分析 109
6.4.6 OnExpressionCondition分析 110
6.4.7 OnJavaCondition分析 111
6.4.8 OnJndiCondition分析 111
6.4.9 OnPropertyCondition分析 112
6.4.10 OnResourceCondition分析 114
6.4.11 OnWarDeploymentCondition分析 115
本章小结 115
第7章 EnableAutoConfiguration相关分析 116
7.1 EnableAutoConfiguration初识 116
7.2 AutoConfigurationImportSelector分析 117
7.3 ConfigurationClassFilter 分析 120
7.4 AutoConfigurationImportListener 分析 124
7.5 ImportAutoConfigurationImportSelector 分析 125
7.5.1 determineImports分析 126
7.5.2 getCandidateConfigurations分析 126
7.5.3 getExclusions分析 128
7.6 AutoConfigurationPackages相关分析 129
7.6.1 PackageImports分析 130
7.6.2 register分析 130
本章小结 131
第8章 Spring Boot日志系统分析 132
8.1 LoggingSystemFactory分析 132
8.2 DelegatingLoggingSystemFactory分析 133
8.3 LoggingSystem和AbstractLoggingSystem分析 133
8.4 JavaLoggingSystem分析 135
8.5 LogbackLoggingSystem分析 136
8.6 Log4J2LoggingSystem分析 137
8.7 LoggingApplicationListener分析 138
本章小结 139
第9章 Spring Boot中异常报告相关分析 140
9.1 SpringBootExceptionReporter分析 140
9.1.1 FailureAnalyzers 对象分析 140
9.1.2 SpringBootExceptionReporter 使用时机 143
9.2 FailureAnalysisReporter分析 144
9.3 FailureAnalyzer分析 145
本章小结 146
第10章 EnableConfigurationProperties相关分析 147
10.1 EnableConfigurationPropertiesRegistrar分析 147
10.2 ConfigurationPropertiesBeanRegistrar分析 149
10.3 ConfigurationPropertiesBinder分析 151
10.3.1 ConfigurationPropertiesBean分析 152
10.3.2 BindHandler分析 157
10.3.3 Binder分析 164
10.3.4 ConfigurationPropertiesBinder#bind方法分析 168
10.4 ConfigurationPropertiesBindingPostProcessor分析 169
10.5 BoundConfigurationProperties分析 173
10.6 ConfigurationPropertySource分析 173
10.6.1 AliasedConfigurationPropertySource 分析 174
10.6.2 FilteredConfigurationPropertiesSource分析 175
10.6.3 SpringConfigurationPropertySource分析 176
10.7 ConfigurationPropertiesScanRegistrar 分析 176
本章小结 179
第11章 Spring Boot中Servlet相关扫描与注册分析 180
11.1 ServletComponentScan相关分析 180
11.2 ServletComponentHandler 相关分析 182
11.3 RegistrationBean相关分析 185
11.3.1 ServletListenerRegistrationBean分析 186
11.3.2 DynamicRegistrationBean分析 186
11.3.3 ServletRegistrationBean分析 187
11.3.4 AbstractFilterRegistrationBean分析 188
11.4 WebListenerRegistrar和WebListenerRegistrar相关分析 190
本章小结 194
第12章 WebServerFactory分析 195
12.1 WebServerFactory子接口说明 195
12.2 JettyServletWebServerFactory分析 197
12.3 JettyReactiveWebServerFactory分析 200
12.4 TomcatServletWebServerFactory分析 201
12.5 TomcatReactiveWebServerFactory分析 207
12.6 UndertowServletWebServerFactory和UndertowReactiveWebServerFactory分析 209
12.7 NettyReactiveWebServerFactory分析 212
12.8 HttpHandlerAdapter相关分析 213
12.8.1 ServletHttpHandlerAdapter分析 214
12.8.2 TomcatHttpHandlerAdapter分析 218
12.8.3 JettyHttpHandlerAdapter分析 219
12.8.4 UndertowHttpHandlerAdapter分析 220
12.8.5 ReactorHttpHandlerAdapter分析 221
12.9 HttpHandler相关分析 222
12.9.1 DelayedInitializationHttpHandler分析 222
12.9.2 LazyHttpHandler分析 223
12.9.3 ContextPathCompositeHandler分析 223
12.9.4 HttpWebHandlerAdapter分析 224
本章小结 225
第13章 WebServer分析 226
13.1 初识WebServer 226
13.2 TomcatWebServer分析 227
13.3 JettyWebServer分析 234
13.4 NettyWebServer分析 237
13.5 UndertowWebServer分析 240
13.6 WebServer启动分析 242
本章小结 245
第14章 ErrorPage和Servlet包相关分析 246
14.1 ErrorPageRegistry 分析 246
14.2 ErrorPageRegistrar 分析 249
14.3 servlet-context分析 251
14.4 servlet-error分析 254
14.5 servlet-filter分析 257
本章小结 258
第15章 Spring Boot中JDBC相关内容分析 259
15.1 DataSourceAutoConfiguration分析 259
15.2 JdbcTemplateAutoConfiguration 和DataSourceTransactionManagerAutoConfiguration
分析 267
本章小结 269
第16章 Spring Boot Actuator 相关分析 270
16.1 Endpoints介绍 270
16.2 ServletWebOperation分析 274
16.2.1 ServletWebOperationAdapter 分析 275
16.2.2 SecureServletWebOperation分析 276
16.3 Operation相关分析 277
16.4 OperationInvoker相关分析 278
16.5 ExposableEndpoint相关分析 280
16.5.1 ExposableServletEndpoint分析 280
16.5.2 ExposableJmxEndpoint和ExposableWebEndpoint分析 282
16.5.3 AbstractExposableEndpoint分析 283
16.5.4 DiscoveredEndpoint和ExposableControllerEndpoint分析 284
16.6 EndpointsSupplier相关分析 285
16.6.1 EndpointDiscoverer分析 286
16.6.2 DiscoveredOperationsFactory 分析 294
16.6.3 OperationParameter分析 297
16.6.4 ParameterValueMapper分析 298
16.7 Endpoint自动装配Web相关内容分析 299
16.7.1 WebMvcEndpointHandlerMapping 分析 300
16.7.2 WebOperationRequestPredicate分析 307
16.8 端点info分析 308
本章小结 310
第17章 Spring Boot Devtools factories相关分析 311
17.1 Devtools中spring.factories概述 311
17.2 Devtools中ApplicationContextInitializer相关分析 312
17.3 Devtools中ApplicationListener相关分析 314
17.4 Devtools中EnableAutoConfiguration相关分析 317
17.4.1 DevToolsDataSourceAutoConfiguration分析 317
17.4.2 LocalDevToolsAutoConfiguration分析 321
17.4.3 RemoteDevToolsAutoConfiguration分析 326
17.5 Devtools中EnvironmentPostProcessor相关分析 328
17.5.1 DevToolsHomePropertiesPostProcessor分析 328
17.5.2 DevToolsPropertyDefaultsPostProcessor分析 329
本章小结 330
第18章 devtools中文件与类监控相关分析 331
18.1 FileSystemWatcherFactory相关分析 331
18.2 FileChangeListener分析 339
18.3 FailureHandler相关分析 344
18.4 ClassPathFileSystemWatcher分析 345
18.5 RestartLauncher和RestartClassLoader分析 346
本章小结 350
第19章 Spring Test相关分析 351
19.1 TestContext相关分析 351
19.1.1 CacheAwareContextLoaderDelegate分析 354
19.1.2 ContextCache分析 356
19.2 ContextLoader分析 361
19.2.1 AbstractContextLoader分析 362
19.2.2 AbstractGenericContextLoader分析 365
19.2.3 AbstractGenericWebContextLoader分析 368
19.3 TestExecutionListener分析 371
19.4 TestContextManager分析 372
19.5 SpringJUnit4ClassRunner分析 373
19.6 TestContextBootstrapper分析 375
本章小结 381
第20章 Spring Boot Test 分析 382
20.1 Spring Boot Test中的factories 382
20.1.1 Spring Boot Test中的ContextCustomizerFactory 383
20.1.2 Spring Boot Test中的TestExecutionListener 389
20.1.3 Spring Boot Test中的EnvironmentPostProcessor 392
20.2 Spring Boot Test中上下文相关分析 393
20.2.1 SpringBootContextLoader分析 393
20.2.2 SpringBootTestContextBootstrapper分析 396
本章小结 398