Spring Boot 启动流程
2020-03-24 11:50:02 0 举报
Spring Boot
作者其他创作
大纲/内容
② deduceMainApplicationClass()从传入的配置类中寻找 main 方法
④ callRunners(context)从容器中获取所有的 ApplicationRunner 和 CommandLineRunner,回调 run 方法
ServerProperties导入配置文件组件,方便我们使用配置文件定义 tomcat 属性
WebServerFactoryCustomizerBeanPostProcessor导入一个用来处理 WebServerFactory 属性的组件
Spring span style=\
end
① deduceFromClasspath() span style=\
getWebServerFactory从 IOC 容器中获取
加载 Spring 提供的所有TomcatWebServerFactoryCustomizer
prepareContext()准备上下文环境
ServletWebServerFactoryAutoConfiguration
IOC 容器启动
TomcatWebServerFactoryCustomizerSpring Boot 提供的修改器,其实就是读取配置文件进行 customize
③ createApplicationContext()创建 IOC 容器,判断常见普通的 IOC 容器还是 Web IOC 容器
SpringApplication#<init> span style=\
createWebServer
listeners.contextPrepared(context)回调所有 SpringApplicationRunListener 的 contextPrepared 方法
refresh
listeners.environmentPrepared(environment)回调所有 SpringApplicationRunListener 的 environmentPrepared 方法
listeners.running(context)回调所有 SpringApplicationRunListener 的 running 方法
TomcatServletWebServerFactory导入 web 容器的 factory 工厂
listeners.started(context)回调所有 SpringApplicationRunListener 的 started 方法
onRefresh
getOrCreateEnvironment()准备或者创建环境
postProcessBeforeInitialization在 WebServerFactory 实例化之前,先调用这个方法获取所有的 WebServerFactoryCustomizer,然后循环调用 customize 方法
postProcessspan style=\
prepareEnvironment()准备上下文环境,span style=\
listeners.contextLoaded(context)回调所有 SpringApplicationRunListener 的 contextLoaded 方法
refreshContext()span style=\
printBanner()span style=\
setListeners()从 META-INF/spring.factories 目录下获取 ApplicationListener 类型
listeners.starting()回调所有 SpringApplicationRunListener 的 starting 方法
run(args)调用 run 方法
EmbeddedTomcatspan style=\
setInitializers()从 META-INF/spring.factories 目录下获取 ApplicationContextInitializer 类型
嵌入式span style=\
initializer.initialize(context)回调所有 ApplicationContextInitializer 的 initialize 方法
getRunListeners()从 META-INF/spring.factories 目录下获取 SpringApplicationRunListener类型
EmbeddedWebServerFactoryCustomizerAutoConfiguration
BeanPostProcessorsRegistrar用来向 IOC 容器中导入组件
0 条评论
下一页