1. 程式人生 > >IT歡樂頌——程式設計總結、挖掘資源、分享投資、區塊鏈、炒房。用資料講IT圈的歡樂頌

IT歡樂頌——程式設計總結、挖掘資源、分享投資、區塊鏈、炒房。用資料講IT圈的歡樂頌

Spring Boot執行流程分析

       spring boot的啟動

  • 例項化SpringApplication,然後呼叫run
    SpringApplication app = new SpringApplication(App.class);ConfigurableApplicationContext context = app.run(args);
  • 直接呼叫靜態的run方法(內部轉換成第一種呼叫方式)
    ConfigurableApplicationContext context = SpringApplication.run(App.class,
    args);
  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介面,排序,依次呼叫