springboot的項目在建立時會自動設定一個入口:
SpringbootConfigApplication
注解@SpringBootApplication辨別這是一個springboot應用。同時,它還有很多子注解,這些子注解包含了自動裝配功能。
靜态方法run()運作時,啟動該應用,也有可能是一個服務,這根據項目配置檔案,是否由web依賴。
package springbootconfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import springbootconfig.wang.pojo.User;
@SpringBootApplication
public class SpringbootConfigApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootConfigApplication.class, args);
}
}
@SpringBootApplication自動裝配了解:
由AutoConfigurationImportSelector類實作
根據源碼,我們可以看到自動裝配最終也是讀取配置檔案,這個配置檔案的路徑是
spring-boot-autoconfigure\2.2.6.RELEASE\spring-boot-autoconfigure-2.2.6.RELEASE.jar!\META-INF\spring.factories
源碼自動裝配配置擷取步驟:
spring.fatories中包含了所有自動裝配的類,這些類辨別各個功能子產品.這些類中有注解@ConditionXXX 如果滿足條件時,就會導入該功能。
以WebMvcAutoConfiguration為例:由于Servlet.class,DispatcherServletet等類沒有導入。它也不會自動裝配。
現在我在pom.xml中添加web依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
可以看到已經滿足自動裝配條件:
當運作run()就是開啟一個web服務。前台可以通路。