知識庫 / Spring / Spring Boot RSS 訂閱

Spring Boot 註解

Spring Boot
HongKong
8
02:01 PM · Dec 06 ,2025
<div>
 <a class="article-series-header" href="javascript:void(0);">該文章是系列的一部分</a>
 <div>
  <div>
   • Spring Core 註解
   <br>
   • Spring Web 註解
   <br>
   <div>
    • Spring Boot 註解 (當前文章)
   </div>
   • Spring Scheduling 註解
   <br>
   • Spring Data 註解
   <br>
   • Spring Bean 註解
   <br>
  </div>
  <!-- end of article series inner -->
 </div>
 <!-- .article-series-links -->
</div>

1. 概述

Spring Boot 通過其自動配置功能,簡化了 Spring 的配置。

在本快速教程中,我們將探索來自 <em >org.springframework.boot.autoconfigure</em><em >org.springframework.boot.autoconfigure.condition</em> 包的註解。

2. <em @SpringBootApplication>

我們使用此註解來標記 Spring Boot 應用的主類

@SpringBootApplication
class VehicleFactoryApplication {

    public static void main(String[] args) {
        SpringApplication.run(VehicleFactoryApplication.class, args);
    }
}

@SpringBootApplication 封裝了 @Configuration@EnableAutoConfiguration@ComponentScan 註解及其默認屬性。

3. @EnableAutoConfiguration

@EnableAutoConfiguration,正如其名稱所示,啓用自動配置。這意味着 Spring Boot 會在其 classpath 上查找自動配置 Bean 並自動應用它們

請注意,必須使用此註解與 @Configuration 一起使用:

@Configuration
@EnableAutoConfiguration
class VehicleFactoryConfig {}

4. 自定義配置條件

通常,當我們編寫自定義的自動配置時,我們希望 Spring 能夠根據條件來使用它們。我們可以通過本部分中提供的註解來實現這一點。

我們可以將這些註解放置在 @Configuration 類或 @Bean 方法上。

在下一部分中,我們將僅介紹每個條件的基本概念。有關更多信息,請訪問這篇文章。

4.1. <em @ConditionalOnClass</em><em @ConditionalOnMissingClass</em>

使用這些條件,Spring 僅會在註解中指定的 參數類存在/不存在 時才使用標記的自動配置 Bean:

@Configuration
@ConditionalOnClass(DataSource.class)
class MySQLAutoconfiguration {
    //...
}

4.2. <em @ConditionalOnBean</em><em @ConditionalOnMissingBean</em>

我們可以使用這些註解,當我們需要根據特定 Bean 的 存在或不存在 來定義條件時:

@Bean
@ConditionalOnBean(name = "dataSource")
LocalContainerEntityManagerFactoryBean entityManagerFactory() {
    // ...
}

4.3. <em @ConditionalOnProperty</em>

通過此註解,我們可以設置基於 屬性值的條件

@Bean
@ConditionalOnProperty(
    name = "usemysql", 
    havingValue = "local"
)
DataSource dataSource() {
    // ...
}

4.4. <em @ConditionalOnResource</em>

我們可以讓 Spring 只在特定 資源存在時才使用定義:

@ConditionalOnResource(resources = "classpath:mysql.properties")
Properties additionalProperties() {
    // ...
}

4.5. <em @ConditionalOnWebApplication/><em @ConditionalOnNotWebApplication/>

使用這些註解,我們可以根據當前是或不是一個 Web 應用程序來創建條件:

@ConditionalOnWebApplication
HealthCheckController healthCheckController() {
    // ...
}

4.6. <em @ConditionalExpression</em>>

我們可以使用此註解在更復雜的場景中使用。Spring會在SpEL表達式評估為true時使用所標記的定義。

@Bean
@ConditionalOnExpression("${usemysql} && ${mysqlserver == 'local'}")
DataSource dataSource() {
    // ...
}

4.7. <em @Conditional</em>

對於更復雜的條件,我們可以創建一個類來評估 自定義條件。 我們告訴 Spring 使用這個自定義條件,通過 <em @Conditional</em>

@Conditional(HibernateCondition.class)
Properties additionalProperties() {
    //...
}

5. 結論

在本文中,我們瞭解瞭如何微調自動配置過程以及為自定義自動配置 Bean 提供條件。

下一頁
Spring 調度註解
上一頁
Spring Web 註解
user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.