SpringApplication的run方法
使用SpringFactoriesLoader讀取listener和ApplicationContextInitializer
建立環境變數,讀取配置資訊
建立上下文(IoC容器,ApplicationContext)
預初始化上下文(prepareContext):將配置類讀取成BeanDefinition
重新整理上下文:
a. 載入所有的自動配置類,把bean解析成beanDefinition(invokeBeanFactoryPostProcessors)
b. onRefresh裡面createWebServer(tomcat)
c. 例項化bean(finishBeanFactoryInitialization)
整個過程中會有很多事件的釋出,呼叫監聽器對外進行擴充套件