Spring Boot 源码研读之创建DefaultBootstrapContext并执行BootstrapRegistryInitializer.initialize()
上一篇文章我们介绍了 SpringApplication 对象的创建过程,在 SpringApplication 创建好后会执行对应的 run() 方法,run() 方法的第一个重要步骤是创建对应的 DefaultBootstrapContext 默认启动上下文对象,顾名思义就是构建一个启动上下文对象,并在启动阶段做一些事情。
让我来看看DefaultBootstrapContext创建的源码:
DefaultBootstrapContext bootstrapContext = createBootstrapContext(); //... private DefaultBootstrapContext createBootstrapContext() { DefaultBootstrapContext bootstrapContext = new DefaultBootstrapContext(); this.bootstrapRegistryInitializers.forEach((initializer) -> initializer.initialize(bootstrapContext)); return bootstrapContext; }通过源码可以看出DefaultBootstrapContext创建过程比较简单,直接实例化一个DefaultBootstrapContext对象,并执行所有BootstrapRegistryInitializer实现类的initialize()方法。通过debug源码,我们也可以看出目前 Spring boot 并没有BootstrapRegistryInitializer实现类,因此createBootstrapContext()方法只是创建了一个DefaultBootstrapContext对象并返回。
DefaultBootstrapContext类结构如下图所示:
注:spring boot 版本为3.2.3
