Im Anwendungshintergrund von Entwicklungs- und Testwerkzeugen höre ich oft Kollegen sagen, dass sie eine zeitgesteuerte Aufgabe ausführen müssen, um die Protokollverarbeitung oder Datenreinigung durchzuführen, einschließlich einer komplexen Geschäftsberechnungslogik. Wie können sie bei der Auswahl einer zeitgesteuerten Aufgabe sie schnell implementieren und eine geeignetere Methode für Sie auswählen? Ich habe einige Methoden gesammelt und organisiert, um geplante Aufgaben hier zu implementieren. Ich hoffe, es kann Schülern helfen, die gerade erst anfangen, geplante Aufgaben zu erledigen. Bitte korrigieren Sie ein falsches Schreiben.
Es gibt drei Möglichkeiten, Java Basic -Timing -Aufgaben zusammenzufassen:
1.1 Erstellen Sie einen Thread und lassen Sie ihn dann in der WHHE -Schleife laufen und erwerben Sie den Effekt der Zeitaufgabe durch die Schlafmethode.
1.2 Die Verwendung von Timer und TimerTask hat die folgenden Vorteile im Vergleich zur ersten Methode:
1.3 Der plantexecutorservice wird als gleichzeitige Werkzeugklasse von java.util.concurrent eingeführt. Dies ist die ideale Task -Implementierungsmethode. Im Vergleich zu den beiden vorherigen Methoden hat es die folgenden Vorteile:
Es gibt drei Möglichkeiten, die zeitgesteuerten Frühlingsaufgaben zusammenzufassen:
2.1 geplante TimeTask: Die geplante TimerTask von Spring definiert den Laufzyklus einer Timer -Aufgabe. Leider können Sie die Häufigkeit der Aufgabenausführung angeben, können jedoch nicht genau angeben, wann sie ausgeführt wird, was die Verwendung des zweiten Quarzs für die Aufgabenplanung erfordert.
Erstellen Sie eine Geschäftsaufgabe, die in der Frühlingskonfigurationsdatei deklariert ist.
Konfigurieren Sie in der Feder -Konfigurationsdatei afulledTimerTask und verknüpfen Sie die benutzerdefinierte Task -Instanz zusammen.
Starten Sie den Timer, der TimerFactoryBean von Spring ist für den Start der Zeitaufgabe verantwortlich
2.2 Verwenden von Quarz:
Definieren Sie zunächst die Geschäftslogikaufgaben wie gewohnt:
Deklarieren und konfigurieren Sie die Triggermethode der Jobplanung im Frühjahr
Hier gibt es zwei Arten von Arbeitsplätzen für Quarz, nämlich
org.springframework.Scheduling.quartz.Simpletriggerbean
org.springframework.Scheduling.quartz.crontriggerbean
Die erste Simpliggerbean unterstützt nur die Aufruf von Aufgaben zu einer bestimmten Frequenz, z.
<bean id = "Simpligger"> <Eigenschaft name = "JobDetail" ref = "myjob" /> <Eigenschaft name = "startDelay" value = "0" /> <!-Nachdem die Versandfabrik instanziiert ist, beginnt die Dispatching nach 0 Sekunden-> <Property name = "Repatinterval" value = "2000" /> <!
Die zweite Art von Crontriggerbean unterstützt einmal zu einer bestimmten Zeit, wie z. B. jeden Tag um 12:00 Uhr, wie oben konfiguriert.
Konfigurieren Sie die Versandfabrik
org.springframework.Scheduling.quartz.SchedulerFactoryBean, der Code ist wie oben;
Starten Sie einfach Ihre Bewerbung
2.3 Verwenden von Federlagen
Das eigene zeitgesteuerte Task -Tool von Spring, Spring Task, kann es mit einem leichten Quarz vergleichen, und es ist sehr einfach zu bedienen. Es erfordert keine zusätzlichen Pakete mit Ausnahme von Paketen im Zusammenhang mit Feder und unterstützt zwei Arten von Anmerkungen und Konfigurationsdateien:
Schritt 1: Schreiben Sie die Aufgabenklasse; Taskjob, Methode Job1 - Der zweite Schritt des Codungsablagers: NAMENPACE Fügen Sie und Beschreibung im Feder -Konfigurationsdateiheader hinzufügen
<beans xmlns = "http://www.springframework.org/schema/bean http://www.springframework.org/schema/task/spring-task-3.0.xsd ">
Schritt 3: Stellen Sie bestimmte Aufgaben in der Federkonfigurationsdatei ein
<Aufgabe: Scheduled-Tasks> <Task: Scheduled Ref = "Taskjob" method = "Job1" cron = "0 * * * *?"/> </task: afulled tasks> <context: component-scan base-package = "com.alibaba.mytask"/>
Beschreibung: Der Ref-Parameter gibt die Aufgabenklasse an, die Methode gibt die Methode an, die ausgeführt werden muss, die Cron- und Cronexpression-Ausdrücke, die spezifische Schreibmethode wird hier nicht eingeführt, und die <context: component-scan-Basispackung = "com.alibaba.mytask" /> Spring-Scan-Annotation wird verwendet.
Das Obige dreht sich alles um diesen Artikel, ich hoffe, es wird für das Lernen aller hilfreich sein.