spring boot相對於spring來說簡化了很多配置(這些配置由spring boot自動完成,而不用手動完成),本文主要講的是有關spring boot的自動配置問題。
首先新建一個簡單的spring boot項目。
(1)主程序(主入口類)
package com.example.helloworld;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloworldApplication {
public static void main(String[] args) {
SpringApplication.run(HelloworldApplication.class, args);
}
}
上面這個類即是我們創建的spring boot項目的啓動類(自動生成)。這裏面有一個註解@SpringBootApplication,該註解就是用來說明spring boot程序的啓動類的,當啓動spring boot項目時便會啓動該啓動類的主方法。這個註解還包含另外兩個註解@SpringBootConfiguration和@EnableAutoConfiguration。
- @SpringBootConfiguration 標記spring boot的配置類
- @EnableAutoConfiguration 開啓自動配置功能,只有該註解啓用後,spring boot的自動配置功能才能實現。@EnableAutoConfiguration又包含@AutoConfigurationPackage和@Import(AutoConfigurationPackages.Registrar.class)註解
@AutoConfigurationPackage 自動配置包,通過Spring的底層註解@Import,給容器中導入一個組件AutoConfigurationPackages.Registrar.class;
將主配置類(@SpringBootApplication標註的類)的所在包及下面所有子包裏面的所有組件掃描到Spring容器;
@Import(AutoConfigurationPackages.Registrar.class)給容器中導入組件(將所有需要導入的組件以全類名的方式返回)
(2)場景啓動器
在pom.xml文件中引入了以下依賴
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
spring-boot-starter,spring-boot場景啓動器,幫我們導入了web模塊正常運行所依賴的組件。
spring boot將所有的功能場景都抽取出來,做成一個個的starters(啓動器),只需要在項目裏面引入這些starter相關場景的所有依賴都會導入進來。要用什麼功能就導入什麼場景的啓動器。
有關具體的場景啓動器可參見官方文檔spring-boot-starter。
2020.03.30