知識庫 / Spring RSS 訂閱

Spring 調度註解

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

1. 概述

當單線程執行無法滿足需求時,我們可以使用來自 org.springframework.scheduling.annotation 包的註解。

在本快速教程中,我們將探索 Spring 調度註解。

2. <em @EnableAsync>

通過此註解,我們可以啓用 Spring 中的異步功能。

必須將其與 結合使用:

@Configuration
@EnableAsync
class VehicleFactoryConfig {}

現在,我們已經啓用了異步調用,就可以使用 @Async 來定義支持它的方法。

3. <em @EnableScheduling>

通過此註解,我們可以啓用應用程序中的定時任務。

我們還需要將其與 > 結合使用:

@Configuration
@EnableScheduling
class VehicleFactoryConfig {}

因此,我們可以現在使用 @Scheduled 註解週期性地運行方法。

4. <em @Async

我們可以定義想要在不同的線程中 執行 的方法,從而實現異步執行。

為了實現這一點,我們可以使用 註解標記方法:

@Async
void repairCar() {
    // ...
}

如果將此註解應用於一個類,則所有方法都將異步調用。

請注意,為了使此註解生效,需要啓用異步調用,可以使用 @EnableAsync 或 XML 配置。

關於 @Async 的更多信息,請參閲本文。

5. @Scheduled

如果需要一個方法來 週期性執行,我們可以使用這個註解:

@Scheduled(fixedRate = 10000)
void checkVehicle() {
    // ...
}

我們可以使用它在固定間隔內執行方法,或者使用類似於 cron 表達式進行精細調整。

@Scheduled 利用了 Java 8 的重複註解功能,這意味着我們可以使用它多次標記一個方法:

@Scheduled(fixedRate = 10000)
@Scheduled(cron = "0 * * * * MON-FRI")
void checkVehicle() {
    // ...
}

請注意,帶有@Scheduled註解的方法應具有void返回值。

此外,為了使該註解生效,例如使用@EnableScheduling或XML配置,需要啓用調度。

有關調度的信息,請參考本文檔。

6. <em @Schedules>

我們可以使用此註解來指定多個 > 規則:

@Schedules({ 
  @Scheduled(fixedRate = 10000), 
  @Scheduled(cron = "0 * * * * MON-FRI")
})
void checkVehicle() {
    // ...
}

請注意,自 Java 8 以來,我們就可以通過重複註解功能(如上文所述)來實現相同的結果。

7. 結論

在本文中,我們對最常見的 Spring 定時任務註解進行了概述。

» 下一頁
Spring Data 註解
« 上一頁
Spring Boot 註解
user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.