- Spring Boot 教程
- Spring Boot - 首頁
- Spring Boot - 簡介
- Spring Boot - 快速入門
- Spring Boot - 引導
- Spring Tool Suite
- Spring Boot - Tomcat 部署
- Spring Boot - 構建系統
- Spring Boot - 程式碼結構
- Spring Bean & 依賴注入
- Spring Boot - 執行器
- Spring Boot - 啟動器
- Spring Boot - 應用屬性
- Spring Boot - 配置
- Spring Boot - 註解
- Spring Boot - 日誌記錄
- 構建 RESTful Web 服務
- Spring Boot - 異常處理
- Spring Boot - 攔截器
- Spring Boot - Servlet 過濾器
- Spring Boot - Tomcat 埠號
- Spring Boot - Rest 模板
- Spring Boot - 檔案處理
- Spring Boot - 服務元件
- Spring Boot - Thymeleaf
- 使用 RESTful Web 服務
- Spring Boot - CORS 支援
- Spring Boot - 國際化
- Spring Boot - 排程
- Spring Boot - 啟用 HTTPS
- Spring Boot - Eureka 服務端
- 使用 Eureka 進行服務註冊
- 閘道器代理伺服器和路由
- Spring Cloud 配置伺服器
- Spring Cloud 配置客戶端
- Spring Boot - Actuator
- Spring Boot - Admin 伺服器
- Spring Boot - Admin 客戶端
- Spring Boot - 啟用 Swagger2
- Spring Boot - 使用 SpringDoc OpenAPI
- Spring Boot - 建立 Docker 映象
- 追蹤微服務日誌
- Spring Boot - Flyway 資料庫
- Spring Boot - 傳送郵件
- Spring Boot - Hystrix
- Spring Boot - Web Socket
- Spring Boot - 批處理服務
- Spring Boot - Apache Kafka
- Spring Boot - Twilio
- Spring Boot - 單元測試用例
- Rest Controller 單元測試
- Spring Boot - 資料庫處理
- 保護 Web 應用
- Spring Boot - 使用 JWT 的 OAuth2
- Spring Boot - Google Cloud Platform
- Spring Boot - Google OAuth2 登入
- Spring Boot 資源
- Spring Boot - 快速指南
- Spring Boot - 有用資源
- Spring Boot - 討論
Spring Boot – 配置/自動配置
本章將詳細討論 Spring Boot 配置和自動配置。
Spring Boot 配置
儘管 Spring/Spring Boot 應用可以使用 XML 文件進行配置,但通常建議使用帶有 @Configuration 註解的單個檔案來配置 Spring Boot 應用。
不同型別的註解
@Component 註解
在 Spring Boot 中,@Component 註解宣告一個類為 Spring 元件。這向 Spring 訊號表明該類應由 Spring 容器管理,這意味著它將被自動建立、初始化,並可能被注入到其他元件中。
示例
import org.springframework.stereotype.Component;
@Component
public class Utility {
...
}
@Configuration 註解
在 Spring Boot 中,@Configuration 註解用於指示一個類是 Bean 定義的來源。它是 Spring 框架中的核心註解,並非 Spring Boot 特有的。標有 @Configuration 的類可以使用類中方法上的 @Bean 註解來定義 Bean。然後,這些 Bean 由 Spring 容器管理。@Configuration 推廣基於 Java 的配置方法,而不是僅僅依賴 XML 配置檔案。
示例
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
}
}
@SpringBootApplication 註解
這是一個元註解,它組合了 @EnableAutoConfiguration、@ComponentScan 和 @Configuration。它通常是引導 Spring Boot 應用所需的唯一註解。
示例
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
@ComponentScan 註解
在 Spring Boot 中,@ComponentScan 註解用於指示 Spring 掃描指定的包及其子包中的元件(用 @Component、@Service、@Repository、@Controller 等註解的類)並將它們註冊為 Spring 應用上下文中的 Bean。預設情況下,如果您沒有顯式使用 @ComponentScan,Spring Boot 會自動掃描您的主應用程式類所在的包及其子包。如果您的元件位於不同的包結構中,您可以使用 @ComponentScan 的 basePackages 屬性來指定要掃描的包。您可以使用 basePackages 中的陣列指定多個包,例如:
basePackages = {"com.example.package1", "com.example.package2"}
示例
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan(basePackages = {"com.example.mypackage"})
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
什麼是 Spring Boot 自動配置?
Spring Boot 自動配置是一項功能,它可以根據類路徑上存在的依賴項和各種屬性設定來自動配置您的 Spring 應用程式。這消除了許多手動配置的需要,使 Spring Boot 應用程式更容易設定和維護。
@SpringBootApplication 或 @EnableAutoConfiguration 註解
這些註解觸發自動配置過程。通常,您使用 @SpringBootApplication 註解您的主應用程式類,其中包含 @EnableAutoConfiguration。可以使用 @AutoConfigurationPackage 註解配置其他包。
掃描類路徑 - Spring Boot 掃描類路徑以查詢庫和框架。
條件配置 - 基於檢測到的依賴項,Spring Boot 應用相關的配置。這是使用 @Conditional 註解完成的,例如:
@ConditionalOnClass - 如果類路徑上存在特定類,則應用配置。
@ConditionalOnMissingBean - 如果尚未定義特定 Bean,則應用配置。
@ConditionalOnProperty - 基於屬性值應用配置。
Bean 建立和配置 - Spring Boot 基於應用的自動配置建立和配置 Bean。
示例
如果您將 spring-boot-starter-web 依賴項新增到您的專案中,Spring Boot 會自動配置 Tomcat web 伺服器以及 web 應用程式所需的其它元件。
如果您添加了 spring-boot-starter-data-jpa 依賴項,Spring Boot 會自動配置資料來源、實體管理器以及基於 JPA 的資料訪問所需的其它元件。
Spring Boot 自動配置的優勢
以下是使用 Spring Boot 自動配置的一些主要優勢。
減少樣板程式碼 - 自動配置消除了手動配置常用 Spring 元件的需要。
加快開發速度 - 您可以快速建立 Spring Boot 應用程式,而無需編寫大量的配置程式碼。
提高生產力 - 自動配置允許您專注於應用程式的核心業務邏輯。
自定義 - 您可以透過以下方式自定義自動配置行為
使用 @EnableAutoConfiguration 的 exclude 屬性排除特定的自動配置類。
定義您自己的 Bean 來覆蓋自動配置的 Bean。
使用屬性檔案或環境變數來修改預設配置。