Ich versuche, meinen Code nach einem festen Zeitplan ausführen zu lassen, der auf einem Spring-Cron-Ausdruck basiert. Ich möchte, dass der Code jeden Tag um 01:01 Uhr ausgeführt wird. Ich habe den folgenden Ausdruck ausprobiert, aber das hat für mich nicht ausgelöst. Was ist hier falsch an der Syntax?
@Scheduled(cron = "0 1 1 ? * *")
public void resetCache() {
// ...
}
Antworten:
Versuche es mit:
Unten finden Sie die Beispielmuster aus dem Frühlingsforum:
Der Cron-Ausdruck wird durch sechs Felder dargestellt:
(*)
bedeutet Übereinstimmung mit jedem*/X
bedeutet "jedes X"?
("kein bestimmter Wert") - nützlich, wenn Sie in einem der beiden Felder, in denen das Zeichen zulässig ist, etwas angeben müssen, im anderen jedoch nicht. Wenn ich zum Beispiel möchte, dass mein Abzug an einem bestimmten Tag des Monats (z. B. am 10.) ausgelöst wird, es mir aber egal ist, welcher Wochentag gerade ist, würde ich "10" in den Tag setzen. Monatsfeld und "?" im Feld Wochentag.PS: Damit es funktioniert, müssen Sie es in Ihrem Anwendungskontext aktivieren: https://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/scheduling.html#scheduling- Annotation-Unterstützung
quelle
Für meinen Planer benutze ich es, um jeden Tag um 6 Uhr morgens zu feuern, und meine Cron-Notation lautet:
Wenn Sie 1: 01: am möchten, stellen Sie es auf ein
Vollständiger Code für den Scheduler
** SEHR WICHTIG
Um sicherzugehen, dass Ihr Scheduler die Zündzeit korrekt ist, müssen Sie den Zonenwert wie folgt einstellen (ich bin in Istanbul):
Die vollständigen Zeitzonenwerte finden Sie hier .
Hinweis: Meine Spring Framework-Version lautet: 4.0.7.RELEASE
quelle
<task:scheduled ref="paypalCronJob" method="runTask" cron="0 0 6 * * * ?"/>
?Sie können Ihre Methode mit annotieren
@Scheduled(cron ="0 1 1 * * ?")
.0 - ist für Sekunden
1- 1 Minute
1 Stunde des Tages.
quelle
In Gipinanis Antwort fehlt etwas
Dies wird um 1.01 und 13.01 ausgeführt. Es kann verwendet werden, wenn Sie den Job mehrmals täglich ohne Muster ausführen müssen.
Das Zonenattribut ist sehr nützlich, wenn Sie Bereitstellungen auf Remoteservern durchführen. Dies wurde mit Feder 4 eingeführt.
quelle
Eine Sache, die mir aufgefallen ist, ist: Frühling CronTrigger ist nicht cron. Möglicherweise erhalten Sie 7 Parameter in einem gültigen Cron-Ausdruck (den Sie auf cronmaker.com validieren können), und Spring akzeptiert ihn dann nicht. In den meisten Fällen löschen Sie nur den letzten Parameter und alles funktioniert einwandfrei.
quelle
Frühlings-Cron-Ausdruck für jeden Tag 1: 01: am
@Scheduled (cron = "0 1 1? * *")
Weitere Informationen finden Sie in den folgenden Informationen:
https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm
quelle