Korzystając z możliwości Spring 3.0 do adnotacji zaplanowanego zadania, chciałbym ustawić fixedDelay
parametr as z mojego pliku konfiguracyjnego, zamiast podłączać go na stałe do mojej klasy zadań, tak jak obecnie ...
@Scheduled(fixedDelay = 5000)
public void readLog() {
...
}
Niestety wygląda na to, że za pomocą języka Spring Expression Language (SpEL) @Value
zwraca obiekt typu String, który z kolei nie może być automatycznie dopasowany do długiej wartości wymaganej przez fixedDelay
parametr.
Spring v3.2.2 dodał parametry String do oryginalnych 3 długich parametrów, aby to obsłużyć.
fixedDelayString
,fixedRateString
iinitialDelayString
są teraz również dostępne.źródło
Możesz użyć
@Scheduled
adnotacji, ale tylko razem zcron
parametrem:Twój 5-sekundowy interwał można wyrazić jako
"*/5 * * * * *"
. Jednak, jak rozumiem, nie można zapewnić precyzji poniżej 1 sekundy.źródło
W Spring Boot 2 możemy użyć języka Spring Expression Language (SpPL) dla
@Scheduled
właściwości adnotacji:application.properties
Plik będzie wyglądać następująco:Otóż to. Oto artykuł, który szczegółowo wyjaśnia planowanie zadań.
źródło
Myślę, że możesz sam przeliczyć wartość, definiując fasolę. Nie próbowałem tego , ale myślę, że podejście podobne do następującego może być dla Ciebie przydatne:
gdzie:
źródło
@Scheduled
adnotacją.