1. 程式人生 > 其它 >Springboot裝配原理——2021-12-17

Springboot裝配原理——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,就有對應的啟動器了,有了啟動器,我們自動裝配就會生效,然後就配置成功!

  1. springboot在啟動的時候,從類路徑下/META-INF/spring.factories獲取指定的值
  2. 將這些自動配置的類匯入容器,自動配置就會生效,幫我們進行自動配置
  3. 以前我們需要自動配置的東西,現在springboot幫我們做了!
  4. 整合javaEE,解決方案和自動配置的東西都在spring-boot-autoconfigure-2.2.0.RELEASE.jar這個包下
  5. 它會把所有需要匯入的元件,以類名的方式返回,這些元件就會被新增到容器;
  6. 容器中也會存在非常多的xxxAutoConfiguration的檔案(@Bean),就是這些類給容器中匯入了這個場景需要的所有元件;並自動配置,@Configuration,JavaConfig!
  7. 有了自動配置類,免去了我們手動編寫配置檔案的工作