[英]Is it possible to assign @Scheduled with a period representing "never" (in Spring)?
我正在調查以固定速率使用@Scheduled ,在某些可配置的情況下,不應運行預定的作業。
文檔沒有提到這一點,但fixedDelay()
和fixedDelayString()
的默認值分別是-1
和""
。 這些可以用來可靠地確保預定的方法不會觸發嗎?
你不能。 當您將fixedDelay
屬性設置為-1
或嘗試使用@Scheduled
而不為其任何屬性指定有效值時,Spring會抱怨沒有設置任何屬性:
確切地說,
'cron'
,'fixedDelay(String)'
或'fixedRate(String)'
屬性之一是必需的
您可以通過查看ScheduledAnnotationBeanPostProcessor#processScheduled
的源代碼來驗證此行為。
它包含如下邏輯:
boolean processScheduled = false;
// ...
if (fixedRate >= 0) {
Assert.isTrue(!processedSchedule, errorMessage);
processedSchedule = true;
this.registrar.addFixedRateTask(new IntervalTask(runnable, fixedRate, initialDelay));
}
// ...
Assert.isTrue(processedSchedule, errorMessage);
看一下這篇SO帖子 ,了解有條件禁用@Scheduled
一些選項。
正如spring docs中提到的,您可以指定"-"
來禁用任務的觸發:
CRON_DISABLED:表示禁用觸發器的特殊 cron 表達式值:
"-"
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.