SpringBoot自動配置排除的五種方式
本文聚焦 SpringBoot 自動配置排除的核心知識點,涵蓋基礎(chǔ)認知、5種實戰(zhàn)排除方式、高頻場景、排錯技巧及面試考點,精簡冗余內(nèi)容,保留實戰(zhàn)與面試核心,復(fù)制可用、易懂好記。
一、自動配置核心邏輯
1. 自動配置本質(zhì)
SpringBoot “開箱即用” 依賴自動配置:引入 Starter 依賴(如 web、redis),啟動時自動加載對應(yīng)配置類、創(chuàng)建 Bean,無需手動配置。核心載體是 spring-boot-autoconfigure 依賴中的自動配置類(如RedisAutoConfiguration)。
2. 自動配置觸發(fā)條件
1. 依賴存在:對應(yīng) Starter 或自動配置類所在 jar 包已加載;
2. 條件匹配:自動配置類上的 @Conditional 系列注解(如 @ConditionalOnClass)匹配成功。
3. 為什么需要排除自動配置?
依賴傳遞導(dǎo)致多余加載、自定義 Bean 沖突、多環(huán)境輕量化啟動、第三方 Starter 沖突、自定義 Starter 開發(fā),避免項目啟動報錯、資源浪費。
二、5種排除自動配置方式
方式1:@SpringBootApplication(exclude)
直接在啟動類注解中指定排除的自動配置類(Class 對象),適合固定排除少量配置。
@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class, // 排除數(shù)據(jù)源配置
RedisAutoConfiguration.class // 排除Redis配置
})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}注意:全局生效,需確保配置類可導(dǎo)入,不支持多環(huán)境。
方式2:@SpringBootApplication(excludeName)
用全類名字符串指定排除類,適配包權(quán)限限制、版本變更過渡場景。
@SpringBootApplication(excludeName = {
"org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration"
})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}注意:全類名需拼寫正確,不推薦常規(guī)使用。
方式3:配置文件排除
通過 yml/properties 配置,支持多環(huán)境動態(tài)切換,無需修改代碼,微服務(wù)首選。
# application.yml(推薦)
spring:
autoconfigure:
exclude:
- org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
- org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration多環(huán)境配置:分別在 application-dev.yml、application-prod.yml 中配置,啟動時指定環(huán)境(--spring.profiles.active=dev)。
方式4:@EnableAutoConfiguration(exclude)
@SpringBootApplication 底層注解,適合非標準啟動類、自定義配置擴展。
@Configuration
@ComponentScan(basePackages = "com.example.demo")
@EnableAutoConfiguration(exclude = DataSourceAutoConfiguration.class)
public class MyConfig {
// 自定義Bean配置
}方式5:autoconfigure.exclude 文件
SpringBoot 2.0+ 支持,全局統(tǒng)一排除,適合自定義 Starter、多模塊統(tǒng)一配置。
操作:resources/META-INF/spring/ 下創(chuàng)建 autoconfigure.exclude 文件,一行一個全類名。
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
三、5種方式對比
| 排除方式 | 優(yōu)先級 | 核心優(yōu)點 | 適用場景 |
| @SpringBootApplication(exclude) | 最高 | 簡單直觀、精準 | 普通項目、固定排除 |
| @SpringBootApplication(excludeName) | 最高 | 無需導(dǎo)入Class | 無法導(dǎo)入Class場景 |
| 配置文件排除 | 中 | 支持多環(huán)境、靈活 | 微服務(wù)、多環(huán)境 |
| @EnableAutoConfiguration(exclude) | 最高 | 底層擴展 | 非標準啟動類 |
| autoconfigure.exclude 文件 | 最低 | 全局統(tǒng)一 | 自定義Starter |
四、實戰(zhàn)排除清單
1. 非Web服務(wù)(排除Tomcat)
@SpringBootApplication(exclude = {
ServletWebServerFactoryAutoConfiguration.class,
WebMvcAutoConfiguration.class
})2. 排除數(shù)據(jù)庫配置(解決數(shù)據(jù)源報錯)
@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class
})3. 排除Redis配置(自定義RedisTemplate)
@SpringBootApplication(exclude = {
RedisAutoConfiguration.class,
RedisRepositoriesAutoConfiguration.class
})五、常見問題
1. 排除失敗
原因:全類名拼寫錯誤、排除類不正確、依賴傳遞、優(yōu)先級問題;
技巧:添加 debug=true 查看自動配置報告,核對全類名和依賴樹。
2. 配置文件排除不生效
原因:路徑/文件名錯誤、未指定環(huán)境、注解覆蓋;
技巧:確認配置文件加載日志,去掉注解排除測試。
3. 排除后Bean不存在報錯
原因:排除了依賴Bean的自動配置類;
技巧:保留必要配置類或刪除依賴該Bean的代碼。
總結(jié)
SpringBoot 自動配置排除,看似簡單,卻是解決項目啟動報錯、避免Bean沖突的核心技巧,也是面試高頻考點。
其實不用死記硬背,記住兩個核心場景就夠:普通項目用 @SpringBootApplication(exclude),微服務(wù)多環(huán)境用配置文件排除,剩下的場景按需選擇即可。
以上就是SpringBoot自動配置排除的五種方式的詳細內(nèi)容,更多關(guān)于SpringBoot自動配置排除的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java數(shù)據(jù)導(dǎo)出到Word的實現(xiàn)方案
最近業(yè)務(wù)方說周報、月報讓他們很頭疼,每次都要統(tǒng)計數(shù)據(jù)后,手動錄入到word文檔里,希望我負責(zé)的平臺能夠提供這個功能,所以本文給大家介紹了Java數(shù)據(jù)導(dǎo)出到Word的實現(xiàn)方案,需要的朋友可以參考下2025-08-08
Java高效實現(xiàn)復(fù)制PPT(PowerPoint)幻燈片
在日常的開發(fā)工作中,我們經(jīng)常會遇到需要對Office文檔進行編程處理的需求,本文將為您揭示如何利用強大的 Spire.Presentation for Java進行PPT復(fù)制,有需要的小伙伴可以了解下2025-09-09

