Ich möchte ein Cron in Java, die jede 'x' Stunden täglich ausgeführt werden. X wird durch einen Wert in der Datenbank entschieden, der nicht statisch ist. Ich habe versucht, so etwas wie dieses:Ausdruck in einem cron
private static String cronRunTime = getCronRunTimeFromDb();
private String cronExpression = "* " + cronRunTime + " * * *";
Aber das Hauptproblem ich bin vor, das ich nicht bin immer wie kann ich diesen Wert in der @Scheduled Anmerkung konfigurieren.
Ich habe versucht, etwas:
@Scheduled(cron = cronExpression)
public void myCron(){
}
Aber ich einen Fehler bei der Kompilierung bekommen:
error: element value must be a constant expression
@Scheduled(cron = cronExpression)
Kann bei der Lösung dieses Problems helfen mir bitte jemand.
Ist Ihre Frage "Warum bekomme ich einen Compilerfehler?" oder es geht eher um "wie konfiguriere ich Cron-Ausdruck geplante Aufgabe basierend auf Informationen aus der Datenbank?" –
meine Frage ist "Wie konfiguriere ich Cron-Ausdruck geplanten Task basierend auf Informationen aus der Datenbank" –
Ich habe 2 Optionen in meiner Antwort unten: Java-Code und konfigurieren Sie Aufgabe programmgesteuert (mit Spring), und deklarative Weise mit '@ Scheduled Annotation und Platzhalterfunktionen von Spring. Sie können auch die Spring-Methode löschen und einfach reine JDK-Funktionen verwenden, um geplante Tasks auszuführen: 'ExecutorService' usw. –