1. 程式人生 > >SpringBoot系列(二)啟動原理解析

SpringBoot系列(二)啟動原理解析

要想了解開一輛車首先你要知道,這輛車的駕駛座在哪,以及它是如何啟動的。

接下來我們就一起了解一下SpringBoot的啟動原理,之前說過這是SpringBoot入口

那麼下面來看幾個註解

------ @SpringBootApplication 


我們不難發現@SpringBootApplication註解是由多個註解共同組成,其實重要的只有三個

  1. @Configuration
  2. @EnableAutoConfiguration
  3. @ComponentScan

下面簡單介紹一下@Configuration

在我看來@Configuration就相當於配置檔案中的<Beans>標籤,與之相關的@Bean就相當於<Bean>,舉個例子

配置類:


實體類:


測試類:


以上程式碼就相當於在xml檔案中<Beans ...><Bean></Bean><Beans...>,與傳統Spring獲得物件的方式一樣

@EnableAutoConfiguration

啟用Spring應用程式上下文的自動配置,配置你可能需要的bean,自動配置會盡可能的智慧化去配置你可能需要的bean

@EnableAutoConfiguration是一個複合註解


其中最關鍵的是@Import({AutoConfigurationImportSelector.class}),藉助AutoConfigurationImportSelector

可以幫助SpringBoot應用將所有符合條件的@Configuration配置都載入到當前SpringBoot建立並使用的IoC容器。就像一隻“八爪魚”一樣

藉助於Spring框架原有的一個工具類:SpringFactoriesLoader的支援,@EnableAutoConfiguration可以智慧的自動配置功效才得以大功告成!

自動配置幕後英雄:SpringFactoriesLoader詳解

從classpath中搜尋所有的META-INF/spring.factories配置檔案,並將其中org.springframework.boot.autoconfigure.EnableutoConfiguration對應的配置項通過反射(Java Refletion)例項化為對應的標註了@Configuration的JavaConfig形式的IoC容器配置類,然後彙總為一個並載入到IoC容器。