Ich habe ein Programm erstellt, das regelmäßig Aufgaben ausführt, indem ich mich auf das offizielle Spring-Boot-Tutorial beziehe (Aufgabenplan).
Apache Maven 3.6.3 Betriebssystem: macOS Mojave Version 10.14.6 Texteditor: VSCode Java: 11.0.2
Öffnen Sie zunächst Spring Initializr und erstellen Sie eine Grundlage mit den folgenden Inhalten.
Entpacken Sie die resultierende Zip-Datei und öffnen Sie sie in einem Editor.
Fügen Sie pom.xml die folgenden Abhängigkeiten hinzu.
<dependency>
<groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId>
<version>3.1.2</version>
<scope>test</scope>
</dependency>
Awaitility ist eine * Bibliothek, die eine einfache domänenspezifische Sprache (DSL) für asynchrone Systemtests * bereitstellt. (Aus Einführung in die Wartbarkeit)
Erstellen Sie eine ScheduledTasks.java-Datei unter src / main / java / com / example / schedulingtasks.
Der Inhalt ist wie folgt.
ScheduledTasks.java
package com.example.schedulingtasks;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ScheduledTasks {
private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class);
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
@Scheduled(fixedRate = 5000)
public void reportCurrentTime() {
log.info("The time is now {}", dateFormat.format(new Date()));
}
}
fixedRate gibt das Intervall zwischen Methodenaufrufen an, gemessen ab der Startzeit jedes Aufrufs. Andere Optionen, wie z. B. fixedDeley, geben das Intervall zwischen Aufrufen ab Abschluss der Aufgabe an.
@Scheduled Führen Sie die Aufgabe regelmäßig aus. Sie können aus einer Vielzahl von Optionen auswählen (Tabelle unten). Geben Sie den Ausführungszyklus mit der Anmerkung "Geplant" für die Aufgabe an, die Sie regelmäßig ausführen möchten. Diese Anmerkung kann nur für Methoden angegeben werden, die keine Argumente annehmen. (Es führt nicht zu einem Kompilierungsfehler, aber zur Laufzeit tritt eine Ausnahme auf.)
Dieses Mal werde ich die Aufgabe alle 5 Sekunden mit fixedRate ausführen.
field | description |
---|---|
fixedDelay | Wie viele Millisekunden nach der letzten Ausführungsabschlusszeit der Methode wird ausgeführt. |
fixedRate | Wie viele Millisekunden nach dem Start der letzten Ausführung der Methode? |
initialDelay | Wartezeit für die erste Ausführung der Methode. |
cron | Schreiben Sie cron und legen Sie den Zeitplan fest. Sie können die Zeitzone auch mithilfe der Zone angeben. |
Sie können auch (cron = "...") für erweiterte Einstellungen verwenden.
Logger und LoggerFactory dienen zur Ausgabe des Ergebnisses an die Konsole. Sie können das Protokoll anzeigen, indem Sie die Klasse im Argument von LoggerFactory.getLogger () angeben.
Fügen Sie dann den Code zur automatisch erstellten Datei SchedulingTasksApplication.java unter src / main / java / com / example / schedulingtasks / hinzu.
Der Inhalt ist wie folgt.
SchedulingTasksApplication.java
package com.example.schedulingtasks;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
public class SchedulingTasksApplication {
public static void main(String[] args) {
SpringApplication.run(SchedulingTasksApplication.class);
}
}
@SpringBootApplication Dies ist eine praktische Anmerkung, die als Anmerkung für drei Personen dient. Es enthält die folgenden drei Anmerkungen.
@Configuration Sie können zusätzliche Beans im Kontext registrieren und zusätzliche Konfigurationsklassen importieren.
@Bean Es dient zur Rückgabe der Klasse, die durch die Methode instanziiert wurde, die @Bean beschreibt.
@EnableAutoConfiguration Aktiviert den automatischen Konfigurationsmechanismus von Spring Boot.
@ComponentScan Suchen Sie nach anderen Komponenten, Einstellungen usw. im Paket und weisen Sie Spring an, den Controller zu suchen.
@EnableScheduling Aktivieren Sie den Zeitplan.
Der Code ist jetzt vollständig. Führen wir es mit dem folgenden Befehl aus.
./mvnw spring-boot:run
Die Aufgabe wird alle 5 Sekunden ausgeführt.
Es war einfach zu erstellen, ohne Abhängigkeiten hinzuzufügen!
Recommended Posts