本文首發於我的網站:自定義的Spring Boot starter如何設置自動配置註解java
在Spring Boot實戰之定製本身的starter一文最後提到,觸發Spring Boot的配置過程有兩種方法:面試
#org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
#com.test.bookpubstarter.dbcount.DbCountAutoConfiguration
複製代碼
package com.test.bookpubstarter.dbcount;
import org.springframework.context.annotation.Import;
import java.lang.annotation.*;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Import(DbCountAutoConfiguration.class)
@Documented
public @interface EnableDbCounting {
}
複製代碼
package com.test.bookpub;
import com.test.bookpubstarter.dbcount.EnableDbCounting;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableDbCounting
public class BookPubApplication {
public static void main(String[] args) {
SpringApplication.run(BookPubApplication.class, args);
}
}
複製代碼
能夠看出咱們本身定義的註解起做用了。若是沒有spring.factories,那麼在程序啓動的時候Spring Boot的自動配置機制不會試圖解析DbCountAutoConfiguration類。通常來講,@Component註解的做用範圍就是在BookPubApplication所在的目錄以及各個子目錄,即com.test.bookpub.*,而DbCountAutoConfiguration是在org.test.bookpubstarter.dbcount目錄下,所以不會被掃描到。spring
@EnableDbCounting註解經過*@Import(DbCountAutoConfiguration.class)*找到對應的配置類,所以經過用@EnableDbCounting修飾BookPubApplication,就是告訴Spring Boot在啓動過程當中要把DbCountAutoConfiguration加入到應用上下文中。後端
本號專一於後端技術、JVM問題排查和優化、Java面試題、我的成長和自我管理等主題,爲讀者提供一線開發者的工做和成長經驗,期待你能在這裏有所收穫。bash