別小看@SpringBootApplication
SpringBoot的啟動類頭上都會帶著@SpringBootApplication注解。先來看看@SpringBootApplication里面有什么。

包括耳熟能詳?shù)腀ComponentScan 組件掃描注解和@SpringBootConfiguration 配置類注解。而中間的@EnableAutoConfiguration 正是實現(xiàn)約定大于配置的關(guān)鍵。
@EnableAutoCon?guration
作用:將類路徑下 META-INF/spring.factories 里面配置的所有EnableAutoCon?guration的值加入到了容器中。來看下SpringBoot的Jar包中有什么

可以看到配置了一堆的組件。隨便找一個進(jìn)去看看里面還有什么。

發(fā)現(xiàn)了一個和@EnableAutoCon?guration 及其相似的注解@EnableConfigurationProperties。有了@EnableConfigurationProperties 注解,該類就會在服務(wù)啟動時,被自動加載進(jìn)容器中。這就是為什么SpringBoot在啟動時,會自動加載大量配置類的原因了。
@Conditional派生注解
最后說下@Conditional派生注解是干嘛用的。
@ConditionalOnClass(xxxxx.class) - 判斷項目中是否有這個類
@ConditionalOnMissingBean(xxx.class) - 判斷容器中是否有這個組件
@ConditionalOnProperty(prefix = “xxx.xxx”, value = “default”, havingValue = “true”) - 判斷配置文件中是否存在某個配置,并賦上默認(rèn)值
@ConditionalOnWebApplication - 判斷當(dāng)前應(yīng)用是否是web應(yīng)用,如果是,當(dāng)前配置類生效
參考:https://blog.csdn.net/weixin_43776741/article/details/102502308