Springboot裝配原理——2021-12-17
阿新 • • 發佈:2021-12-17
Springboot裝配原理——2021-12-17
自動配置
pom.xml
* spring-boot-dependencies:核心依賴在父工程中!
* 我們在寫或者引入一些Springboot依賴的時候,不需要指定版本,就因為有這些版本倉庫
啟動器
*
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
- 啟動器:說白了就是Springboot的啟動場景;
- 比如spring-boot-starter-web,他就會幫我們自動匯入web環境所有的依賴!
- springboot會將所有的功能場景,都變成一個個的啟動器
- 我們要使用什麼功能,就只需要找到對應的啟動器就可以了 starter
主程式
//@SpringBootApplication : 標註這個類是一個springboot的應用 @SpringBootApplication public class SpringDhxApplication { public static void main(String[] args) { //將springboot應用啟動 SpringApplication.run(SpringDhxApplication.class, args); } }
- 註解
@SpringBootConfiguration:springboot的配置 @Configuration:spring配置類 @Component: 說明這也是一個spring的元件 @EnableAutoConfiguration:自動配置 @AutoConfigurationPackage:自動配置包 @Import(AutoConfigurationPackages.Registrar.class):自動配置"包註冊" @Import(AutoConfigurationImportSelector.class):自動配置匯入選擇 //獲取候選的配置 List<String> configurations = getCandidateConfigurations(annotationMetadata,attributes);
結論:springboot所有的自動配置都是在啟動的時候掃描並載入:spring.factories所有的自動配置類都在這裡面,但是不一定生效,要判斷條件是否成立,只要匯入了對應的start,就有對應的啟動器了,有了啟動器,我們自動裝配就會生效,然後就配置成功!
- springboot在啟動的時候,從類路徑下/META-INF/spring.factories獲取指定的值
- 將這些自動配置的類匯入容器,自動配置就會生效,幫我們進行自動配置
- 以前我們需要自動配置的東西,現在springboot幫我們做了!
- 整合javaEE,解決方案和自動配置的東西都在spring-boot-autoconfigure-2.2.0.RELEASE.jar這個包下
- 它會把所有需要匯入的元件,以類名的方式返回,這些元件就會被新增到容器;
- 容器中也會存在非常多的xxxAutoConfiguration的檔案(@Bean),就是這些類給容器中匯入了這個場景需要的所有元件;並自動配置,@Configuration,JavaConfig!
- 有了自動配置類,免去了我們手動編寫配置檔案的工作