<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 註解