springboot的自動配置功能,主要流程如下: 1 啟動的時候載入我們的主配置類,也就是我們的入口類;從而開啟我們的自動配置配置功能,這個是通過@EnableAutoConfiguration註解實現的; 2 @EnableautoConfiguration利用其註解類中的方法:EnableAu ...
springboot的自動配置功能,主要流程如下:
1 啟動的時候載入我們的主配置類,也就是我們的入口類;從而開啟我們的自動配置配置功能,這個是通過@EnableAutoConfiguration註解實現的;
2 @EnableautoConfiguration利用其註解類中的方法:EnableAutoConfigurationImportSelector,來給容器中導入一些組件;而需要導入那些組件是通過其調用的selectImport()方法實現的,這個方法最終會調用SrpingFactoriesLoader.loadFactoryNames(),來掃描每個jar包下麵的META-INF/spring.factories文件,將這個文件中配置的EnableAutoConfiguration對應的所有值添加到容器中;
註:這裡添加的所有值都是一個配置類,而且其名字命名規則:XXXAutoConfiguration;
3 加入的所有 XXXAutoConfiguration組件,都是配置類,最終其會添加我們需要使用到的組件到容器中;
而每一個XXXAutoConfiguration配置類有一個關鍵的註解:@EnableConfigurationProperties(XXXProperties.class);在這個註解中將application.properties或者application.yml中的對應配置與我們的java bean關聯起來;然後我們在XXXAutoConfiguratio類中添加組件的時候會用到XXXProperties類中的屬性;
所有的配置類都使用的這個套路;
springboot自動配置的總體思路就是,在添加組件的時候將組件中各個屬性值的配置,放在對應的java bean中,配置類在添加某個組件的時候從對應的java bean中讀取屬性的初始化之,而初始化的值我們配置在對應的配置文件中;