自動配置
Spring Boot 自動配置會嘗試根據你新增的 Jar 依賴來自動配置你的 Spring 應用。例如,如果你的 classpath 中有 HSQLDB,並且你沒有手動配置任何資料庫連線 bean,那麼 Spring Boot 會自動配置一個記憶體資料庫。
你需要透過將 @EnableAutoConfiguration
或 @SpringBootApplication
註解新增到你的一個 @Configuration
類來啟用自動配置。
你應該只新增一個 @SpringBootApplication 或 @EnableAutoConfiguration 註解。我們通常建議你只將其中一個新增到你的主 @Configuration 類中。 |
逐步替換自動配置
自動配置是非侵入性的。在任何時候,你都可以定義自己的配置來替換自動配置的特定部分。例如,如果你添加了自己的 DataSource
bean,預設的內嵌資料庫支援就會被取消。
如果你需要了解當前正在應用哪些自動配置以及原因,可以透過 --debug
開關啟動你的應用。這樣做會啟用核心日誌記錄器的部分除錯日誌,並將條件報告記錄到控制檯。
停用特定的自動配置類
如果你發現某些你不想要的自動配置類正在被應用,你可以使用 @SpringBootApplication
的 exclude 屬性來停用它們,如下例所示
-
Java
-
Kotlin
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
public class MyApplication {
}
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
@SpringBootApplication(exclude = [DataSourceAutoConfiguration::class])
class MyApplication
如果類不在 classpath 中,你可以使用註解的 excludeName
屬性並指定完全限定名。如果你更喜歡使用 @EnableAutoConfiguration
而不是 @SpringBootApplication
,exclude
和 excludeName
屬性也可用。最後,你還可以透過使用 spring.autoconfigure.exclude
屬性來控制要排除的自動配置類列表。
你可以在註解級別和使用屬性的方式定義排除項。 |
儘管自動配置類是 public 的,但類的唯一被視為公共 API 的部分是類名,類名可以用於停用自動配置。這些類的實際內容,例如巢狀配置類或 bean 方法,僅供內部使用,我們不建議直接使用它們。 |
自動配置包
自動配置包是各種自動配置特性在掃描實體和 Spring Data repository 等內容時預設查詢的包。@EnableAutoConfiguration
註解(直接使用或透過它存在於 @SpringBootApplication
上)決定了預設的自動配置包。可以使用 @AutoConfigurationPackage
註解配置額外的包。