我在 Spring Boot 中使用 java 8
我有一個類
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
class Sample{
@Scheduled(cron = "00 00 00 * * *")
public void print(){
System.out.println("Hello World!");
}
}
此方法將在每天上午 00:00:000 呼叫
現在有一段時間我想停止呼叫該方法。
我們可以評論方法的一種方式。
有沒有更好的方法來做到這一點?
就像@Disabled在junit中一樣。
uj5u.com熱心網友回復:
在組件上添加條件,例如
@ConditionalOnProperty(name="schdularEnabled", value="true")
然后你可以使用 application.yml 和環境變數來切換 shchedular
uj5u.com熱心網友回復:
您可以將 application.yml 用于 Spring Boot 應用程式中的功能標志。該檔案通常定義應用程式的配置,同時也是功能切換的理想場所。基于一個標志,您可以啟用/禁用功能。
feature-flags:
is-xyz-method-enabled :true
在方法內部只是簡單地檢查這個屬性。
@Value("${is-xyz-method-enabled}")
private boolean isEnabled;
@Scheduled()
public void xyz() {
if(isEnabled) {
}
}
uj5u.com熱心網友回復:
我同意上面提到的方法,但還有另一種選擇,如下所示,
實作一個Spring“條件”介面,該介面使用布林值的回傳型別覆寫matches方法(即,您可以使用布爾回傳撰寫自己的自定義邏輯)。
然后,在@Component/@Configuration/@bean 上使用注解@Conditional(yourconditionclassname.class)。這樣,調度方法僅在條件類回傳 true 時執行。
希望這有助于作為替代方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/341283.html
