什麼是starter
Starter可以理解為一個可拔插式的插件,提供一系列便利的依賴描述符,您可以獲得所需的所有Spring和相關技術的一站式服務。應用程式只需要在maven中引入starter依賴,SpringBoot就能自動掃描到要加載的信息並啟動相應的默認配置。用一句話描述,就是springboot的場景啟動器。
下面是Spring官方提供的部分starter,全部的請參考官網:
開始自定義starter前看看Springboot的AutoConfiguration機制。
Spring boot的AutoConfiguration機制
標記一個應用為Springboot應用,需要一個SpringBootApplication註解,下面是一個標準的spring boot啟動程序。
SpringBootApplication註解又被一個EnableAutoConfiguration註解,EnableAutoConfiguration註解就是自動加載配置的關鍵。
EnableAutoConfiguration是一個組合註解,用Import把AutoConfigurationImportSelector導入容器中,springboot啟動的時候會加載所有的selector並執行selectImports方法,這個方法會加載META-INF/spring.factories中配置的EnableAutoConfiguration,從而加載自動配置。
自定義Starter
1、創建一個工程id-spring-boot-starter,在pom文件中添加以下依賴,我們自定義的starter一般以xxx-spring-boot_starter命名。
2、定義一個映射配置新的的類IDProperties,添加註解ConfigurationProperties(prefix = "id"),我們的配置文件以id開頭,比如id.mathine-id=110
3、創建一個服務IDService,構造函數接收IDProperties,具體代碼
4、創建Configuration類IDConfiguration,添加註解Configuration和EnableConfigurationProperties,把當前類設置成配置類,並且注入IDProperties。
5、重要的一步,在resources目錄下創建META-INF目錄,並添加文件spring.factories。在這個文件中配置EnableAutoConfiguration,具體如下:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.idspringbootstarter.IDConfiguration
測試自定義的Starter
1、創建一個模塊,添加剛才開發好的依賴
2、在application.yml文件中添加我們定義的machineid,
3、創建一個IDController,把IDService注入進來,用IDService生產一個ID
4、啟動服務,進行測試