1. 程式人生 > >Spring Boot學習一之配置類及自動配置

Spring Boot學習一之配置類及自動配置

一、配置類

1. 匯入其他配置類
  你不需要將所有的 @Configuration 放進一個單獨的類, @Import 註解可以用來匯入其他配置類。另外,你也可以使用 @ComponentScan 註解自動收集所有Spring元件,包括 @Configuration 類。

2. 匯入XML配置
  如果必須使用XML配置,建議你仍舊從一個 @Configuration 類開始,然後使用 @ImportResource 註解載入XML配置檔案

 

二、自動配置

Spring Boot自動配置(auto-configuration)嘗試根據新增的jar依賴自動配置你的Spring應用。例如,如果classpath下存在 HSQLDB ,並且你沒有手動配置任何資料庫連線的beans,那麼Spring Boot將自動配置一個記憶體型(in-memory)資料

實現自動配置有兩種可選方式,分別是將 @EnableAutoConfiguration 或 @SpringBootApplication 註解到 @Configuration 類

注:你應該只新增一個 @EnableAutoConfiguration 註解,通常建議將它新增到主配置類(primary @Configuration )

1. 逐步替換自動配置
自動配置(Auto-configuration)是非侵入性的,任何時候你都可以定義自己的配置類來替換自動配置的特定部分。例如,如果你新增自己的 DataSource bean,預設的內嵌資料庫支援將不被考慮。

如果需要檢視當前應用啟動了哪些自動配置項,你可以在執行應用時開啟 --debug 開關,這將為核心日誌開啟debug日誌級別,並將自動配置相關的日誌輸出到控制檯。

 

2. 禁用特定的自動配置項
  如果發現啟用了不想要的自動配置項,你可以使用 @EnableAutoConfiguration 註解的exclude屬性禁用它們:

import org.springframework.boot.autoconfigure.*;
import org.springframework.boot.autoconfigure.jdbc.*;
import org.springframework.context.annotation.*;
@Configuration

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.cl
ass})
public class MyConfiguration {
}

 

如果該類不在classpath中,你可以使用該註解的excludeName屬性,並指定全限定名來達到相同效果。最後,你可以通過 spring.autoconfigure.exclude 屬性exclude多個自動配置項(一個自動配置項集合)。


注 通過註解級別或exclude屬性都可以定義排除項。