图书目录

目录

第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