Staram się, aby mój kod był wykonywany zgodnie z ustalonym harmonogramem, w oparciu o wyrażenie Spring cron. Chciałbym, aby kod był wykonywany codziennie o 1: 01: am. Próbowałem następującego wyrażenia, ale to nie zadziałało. Co jest nie tak ze składnią tutaj?
@Scheduled(cron = "0 1 1 ? * *")
public void resetCache() {
// ...
}
Odpowiedzi:
Spróbuj z:
Poniżej znajdują się przykładowe wzory z wiosennego forum:
Wyrażenie Cron jest reprezentowane przez sześć pól:
(*)
oznacza pasujący dowolny*/X
oznacza „co X”?
(„brak konkretnej wartości”) - przydatne, gdy musisz podać coś w jednym z dwóch pól, w których znak jest dozwolony, ale nie w drugim. Na przykład, jeśli chcę, aby mój spust zadziałał w określony dzień miesiąca (powiedzmy 10), ale nie obchodzi mnie, jaki to będzie dzień tygodnia, wstawiłbym „10” pola miesiąca i „?” w polu dnia tygodnia.PS: Aby to działało, pamiętaj o włączeniu go w kontekście aplikacji: https://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/scheduling.html#scheduling- obsługa adnotacji
źródło
W moim harmonogramie używam go do strzelania codziennie o 6 rano, a moja notacja cron to:
Jeśli chcesz 1: 01: am, a następnie ustaw na
Pełny kod dla harmonogramu
** BARDZO WAŻNE
Aby upewnić się co do poprawności czasu uruchamiania harmonogramu, musisz ustawić wartość strefy w ten sposób (jestem w Stambule):
Pełne wartości stref czasowych można znaleźć tutaj .
Uwaga: Moja wersja ramowa Spring to: 4.0.7. ZWOLNIENIE
źródło
<task:scheduled ref="paypalCronJob" method="runTask" cron="0 0 6 * * * ?"/>
?Możesz użyć adnotacji do swojej metody
@Scheduled(cron ="0 1 1 * * ?")
.0 - jest na sekundę
1- 1 minuta
1 - godzina dnia.
źródło
W odpowiedzi Gipinani brakuje czegoś
Zostanie to wykonane o godzinie 1.01 i 13.01. Można go użyć, gdy trzeba uruchomić zadanie bez wzoru wiele razy dziennie.
A atrybut strefy jest bardzo przydatny, gdy wykonujesz wdrożenia na zdalnych serwerach. Zostało to wprowadzone wiosną 4.
źródło
Zauważyłem jedną rzecz: wiosna CronTrigger nie jest cronem. Możesz skończyć z 7 parametrami w prawidłowym wyrażeniu cron (które możesz sprawdzić na cronmaker.com), a następnie wiosną go nie zaakceptować. W większości przypadków po prostu usuwasz ostatni parametr i wszystko działa dobrze.
źródło
Wiosenne wyrażenie cron dla każdego dnia 1: 01: am
@Scheduled (cron = "0 1 1? * *")
Aby uzyskać więcej informacji, sprawdź te informacje:
https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm
źródło