-
SpringApplication初始化
设置初始化器列表:多个classpath*:META-INF/spring.factories中的属性KEY为 org.springframework.context.ApplicationContextInitializer的属性的值。
设置监听器列表:多个classpath*:META-INF/spring.factories中的属性KEY为 org.springframework.context.ApplicationListener的属性的值。
-
调用SpringApplication的run方法
1.创建SpringApplicationRunListeners,并调用starting()
2.准备Environment
- 获取或创建Environment,WEB项目返回StandardServletEnvironment
- 配置Environment
- 发布ApplicationEnvironmentPreparedEvent事件
3.打印Banner
4创建应用上下文AnnotationConfigEmbeddedWebApplicationContext
AnnotationConfigEmbeddedWebApplicationContext:
接受注解类作为输入-特别是@Configuration,@Component和依从JSR-330使用 {@code javax.inject}注解的类。允许逐个注册类(指定类名作为配置位置)以及类路径扫描(指定基本包作为配置位置)。对于多个{@code@Configuration}类,后面的{@code@Bean}定义将覆盖先前加载文件中定义的定义。可以通过额外配置类来有意的覆盖某些bean定义。
EmbeddedWebApplicationContext:
此上下文会通过搜索一个{@link EmbeddedServletContainerFactory}bean,创建,实