1.springapplication 创建
1.1 读取
META-INF/spring.factories
(1)ApplicationContextInitializer.class
(2)ApplicationListener.class
2 springapplication.run(args)
2.1
SpringApplicationRunListeners listeners = getRunListeners(args);
listeners.starting();
2.2
ConfigurableEnvironment environment -> StandardServletEnvironment {activeProfiles=[], defaultProfiles=[default], propertySources=[StubPropertySource {name='servletConfigInitParams'}, StubPropertySource {name='servletContextInitParams'}, PropertiesPropertySource {name='systemProperties'}, SystemEnvironmentPropertySource {name='systemEnvironment'}]}
2.2.1
ConversionService conversionService -> ApplicationConversionService
configurePropertySources
configureProfiles(environment, args);
2.2.2 prepareEnvironment
listeners.environmentPrepared(environment);
2.2.2.1 org.springframework.cloud.bootstrap.BootstrapApplicationListener
2.2.2.1.1
springapplication.ConfigurableApplicationContext run(String... args)
createApplicationContext()->AnnotationConfigApplicationContext.class
load(context, sources.toArray(new Object[0]))->
AnnotatedBeanDefinitionReader
/org.springframework.cloud.bootstrap.BootstrapImportSelectorConfiguration
this.annotatedReader.register(source);
2.3 创建
ConfigurableApplicationContext context = createApplicationContext();
if (!registry.containsBeanDefinition(CONFIGURATION_ANNOTATION_PROCESSOR_BEAN_NAME)) {
RootBeanDefinition def = new RootBeanDefinition(ConfigurationClassPostProcessor.class);
def.setSource(source);
beanDefs.add(registerPostProcessor(registry, def, CONFIGURATION_ANNOTATION_PROCESSOR_BEAN_NAME));
}
添加内部ConfigurationClassPostProcessor。
AutowiredAnnotationBeanPostProcessor,CommonAnnotationBeanPostProcessor,
registerOrEscalateApcAsRequired
AnnotationConfigApplicationContext
org.springframework.cloud.bootstrap.BootstrapImportSelectorConfiguration
com.alibaba.cloud.nacos.NacosConfigBootstrapConfiguration
com.alibaba.cloud.nacos.NacosConfigBootstrapConfiguration
PropertySourceBootstrapConfiguration
class org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
CommonAnnotationBeanPostProcessor
org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor
configurationPropertiesBeans
nacosConfigProperties
org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext
ConfigurationProperties
DubboApplicationContextInitializer
ImportBeanDefinitionRegistrar
ConfigurationPropertiesBindingPostProcessor