1. 程式人生 > >14-Spring Boot執行流程分析

14-Spring Boot執行流程分析

  1. 判斷是否是web環境 
  2. 載入所有calsspath下面的META-INF/spring.factories ApplicationContextInitializer
  3. 載入所有calsspath下面的META-INF/spring.factories  ApplicationListener
  4. 推斷main方法所在的類
  5. 開始執行run方法
  6. 設定java.awt.headless系統變數
  7. 載入所有calsspath下面的META-INF/spring.factories SpringApplicationRunListeners
  8. 執行SpringApplicationRunListeners所有的starting方法
  9. 例項化ApplicationArguments物件
  10. 建立environment
  11. 配置environment,主要是把run方法的引數配置到environment裡面
  12. 執行所有SpringApplicationRunListeners的environmentPrepared方法
  13. 如果不是web環境,但是是web的environment,則把這個web的environment轉換成標準的environment
  14. 列印Banner
  15. 初始化applicationContext,如果是web環境,例項化AnnotationConfigServletWebServerApplicationContext,否則例項化AnnotationConfigApplicationContext
  16. 如果beanNameGenerator不為空,把beanNameGenerator注入到context裡面去
  17. 回撥所有的ApplicationContextInitializer方法
  18. 執行所有SpringApplicationRunListeners的contextPrepared方法
  19. 依次往spring容器中注入springApplicationArguments物件,springBootBanner物件
  20. 把所有的源載入到context裡面去
  21. 執行所有SpringApplicationRunListeners的contextLoaded方法
  22. 執行context的refreshContext方法,並且呼叫context的registerShutdownHook方法
  23. 回撥,獲取容器中所有的ApplicationRunner,CommandLineRunner介面,排序,依次呼叫