In jüngster Zeit ist es erforderlich, geplante Ausführungsaufgaben in Projekten wie zeitgesteuerte Berechnung von Mitgliederpunkten, die Einberufung von Drittanbietern usw. zu implementieren usw. Da das Projekt das Spring-Framework verwendet, wird es hier in Verbindung mit dem Spring-Framework eingeführt.
Hausaufgaben schreiben
Das heißt gewöhnlich Pojo, wie folgt:
Paket com.pcmall.task; import org.slf4j.logger; import org.slf4j.loggerfactory; public class taska {private static logger logger = loggerfactory.getLogger (taska.class); öffentlicher void taska1 () {for (int (int (int) (int (int) (int (int int i = 0; i <100; i ++) {System.out.println ("---- a1 ----"+i);}} public void taska2 () {für (int i = 0; i <100; i ++) {System.out.println ("----- a2 ----"+i); Stellen Sie bestimmte Aufgaben in der Federkonfigurationsdatei fest
<xml Version = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id = "Taska"> </bean> <bean id = "taskb"> </bean> <bean> <bean id = "taskjoba1"> </targethod name = "targetm name =" value = "Taska1"> </Eigenschaft> <Eigenschaft name = "Concurrent" value = "false"> </property> </bean> <bean id = "taskjoba2"> <Eigenschaft name = "targetObject" ref = "Taska"> </Eigenschaft> <Eigenschaft name = "targetMethod" value = "Taska 2" </blohan> </bon </bon </bon </bon </bon </bon </bon </bon </bon </bo./bowan. id = "taskjobb1"> <Eigenschaft name = "targetObject" ref = "taskb"> </property> <Eigenschaft name = "targetMethod" value = "taskb1"> </probiumsname = "Concurrent" value = "false"> </Eigenschaft> </bean> <bean id = "Taskjobb2" < name = "targetMethod" value = "taskb2"> </Eigenschaft> <Eigenschaft name = "Concurrent" value = "false"> </property> </bean> <bean id = "Taska1Triderger"> <Eigenschaft name = "JobDetail"> <ref bean = "taskjoba1"/> </property> </property> <probium> <property> <property> < ? bean = "taskJobb1"/> </Eigenschaft> <Eigenschaft name = "cronexpression"> <wert> 0/1 * * *? ? bean = "taskb2Triger"/> </list> </property> </bean> </beans>
Beachten
Ein Auslöser kann nur einen Job auslösen, aber ein Job kann durch mehrere Auslöser ausgelöst werden, was diesmal zu Parallelitätsproblemen führt. Wenn Sie in Quartz nicht den gleichen Job gleichzeitig ausführen möchten, können Sie einen staatlichen Job anstelle eines Jobs implementieren. Wenn Sie im Frühjahr MethodInvokingJobDetailFactoryBean verwenden, können Sie dies tun, indem Sie die Eigenschaft von Concurrent = "False" festlegen.
Endnote
Die Vorteile der Verwendung von Quartz im Frühjahr anstelle einer einzelnen Anwendung umfassen:
Wenn Sie alle Einstellungen für Aufgabenplanung an derselben Stelle in den gleichen Ort einstellen, können Sie die Aufgaben leicht zu pflegen.
Die Jobcodierung ist nur möglich, Trigger und Scheduler können durch Konfiguration festgelegt werden
Sie können Pojo Java Bean verwenden, um Jobs auszuführen, ohne die Joboberfläche zu implementieren
Detaillierte Verwendung von Cron -Ausdrücken
Sonderzeichen, die durch Feld zulässigen Werten zulässig sind
0-59 Sekunden, - * /
0-59, - * /
Stunden 0-23, - * /
Datum 1-31, - *? / LWC
Monate 1-12 oder Jan-Dec,- * /
Woche 1-7 oder Sonnen-sa,- *? / LC #
Jahr (optional) Leave Blank, 1970-2099, - * /
Beispiel:
0/5 * * * *? : Führen Sie alle 5 Sekunden aus
Das "" "Zeichen wird verwendet, um alle Werte anzugeben. Zum Beispiel: "" bedeutet "pro Minute" im Feld von Minuten.
Der "?" Der Charakter wird nur in den Feldern Datum und Tag der Woche verwendet. Es wird verwendet, um "nicht definitiver Wert" anzugeben. Es ist nützlich, wenn Sie etwas durch eine dieser beiden Domänen angeben müssen. Sie werden verstehen, indem Sie sich das folgende Beispiel ansehen.
Die beiden Elemente des Datums des Monats und des Datums der Woche schließen sich gegenseitig aus. Legen Sie ein Fragezeichen fest, um anzuzeigen, dass Sie dieses Feld nicht festlegen möchten.
Das "-" -Scharakter wird verwendet, um einen Bereich anzugeben. Zum Beispiel: "10-12" bedeutet "10, 11, 12".
Das ",", "," Zeichen "wird verwendet, um einen zusätzlichen Wert anzugeben. Zum Beispiel: "Mon, Mi, Fr" bedeutet "Mon, Mittwoch, Freitag" im Week Field.
Das "/" -Scharakter wird verwendet, um das Inkrement anzugeben. Zum Beispiel: "0/15" im zweiten Feld bedeutet 0, 15, 30 und 45 Sekunden pro Minute. "5/15" repräsentiert 5, 20, 35 und 50 pro Stunde im Minutefeld. Das Symbol "" ist vor "/" (wie:/10) entspricht 0 vor "/" (wie: 0/10). Denken Sie an eine Essenz: Jedes numerische Feld eines Ausdrucks ist ein Satz maximaler und minimaler Werte, wie z. Das Zeichen "/" kann Ihnen helfen, den entsprechenden numerischen Wert in jedem Zeichenfeld zu erhalten. Zum Beispiel: "7/6" wird nur im Juli ausgelöst, wenn die Monatsdomäne ist, und bedeutet nicht jeden Juni.
L ist ein weggelassenes Wort für "Letzte", das die tagsüber und die Tag der Woche darstellen kann, aber die Bedeutung ist in den beiden Feldern unterschiedlich, beispielsweise ist das Feld Tag des Monats den letzten Tag eines Monats. Wenn das Feld Tag der Woche "7" oder "SAT" bedeutet, wenn die Zahl im Bereich Tag der Woche vorangegangen ist, bedeutet dies die letzten Tage eines Monats, wie z. B. "6L" den letzten Freitag eines Monats.
Das Zeichen "W" lässt das Datumsfeld nur angezeigt. Dieser Charakter wird für den letzten Arbeitstag des angegebenen Datums verwendet. Zum Beispiel: Wenn Sie "15W" im Datumsfeld schreiben, bedeutet dies: Der letzte Arbeitstag dieses Monats am 15. dieses Monats. Wenn der 15. Samstag ist, wird die Mission am 14. ausgelöst. Wenn 15 am Sonntag besser ist, wird die Aufgabe am Montag ausgelöst, das heißt am 16.. Wenn Sie "1W" im Datumsfeld ausfüllen, auch wenn der erste Samstag ist, wird die Aufgabe nur am nächsten Montag ausgelöst, dh der 3.. Der jüngste Arbeitstag, der vom "W" -Scharakter festgelegt wurde, kann nicht in den Monat überquert werden. Das Zeichen "W" kann nur mit einem separaten Wert verwendet werden und kann kein numerisches Feld sein, wie z. B. 1-15W ist falsch.
"L" und "W" können im Datumsfeld gemeinsam verwendet werden, und LW repräsentiert den Arbeitstag der letzten Woche des Monats.
Der Charakter "#" darf nur im Wochentag erscheinen. Dieses Zeichen wird verwendet, um einen bestimmten Tag des Monats anzugeben. Zum Beispiel: "6#3" bedeutet Freitag der dritten Woche des Monats (6 bedeutet Freitag, 3 bedeutet Woche 3). "2#1" bedeutet Montag der ersten Woche des Monats. "4#5" bedeutet Mittwoch der fünften Woche.
Der Charakter "C" darf in den Feldern Datum und Tag der Woche erscheinen. Dieser Charakter stützt sich auf einen bestimmten "Kalender". Das heißt, der Wert dieses Ausdrucks hängt vom Berechnungsergebnis des relevanten "Kalenders" ab. Wenn es keinen "Kalender" -Assoziation gibt, entspricht sie allen "Kalendern" entsprechend. Zum Beispiel: Das Datumsfeld ist "5c", um den ersten Tag im zugehörigen "Kalender" oder in den letzten 5 Tagen des ersten Tages des Monats anzuzeigen. Der Wochentag ist "1C", was den ersten Tag im zugehörigen "Kalender" oder am nächsten Tag des ersten Wochees am nächsten Tag des Sonntags (Montag) bedeutet.
Beispielausdruck
"0 0 12 * *?" Jeden Tag um 12.00 Uhr "0 15 10? * *" Ausgelöst werden jeden Tag um 10:15 Uhr "0 15 10 * *?" Jeden Tag um 10:15 Uhr ausgelöst "0 15 10 * *? Jeden Tag um 10:15 Uhr "0 0/5 14 * * ausgelöst?" Ausgelöst um 14:15 bis 14:59 PM jeden Tag "0 0/5 14 * *?" Ausgelöst von 14.15 bis 14.55 Uhr jeden Tag "0 0/5 14,18 * *?" Jeden Tag von 2:15 bis 14:55 Uhr jeden Tag mit 5 Minuten ausgelöst "0 0/5 14,18 * *?" 0 0-5 14 * *? "0 10,44 14? 3 Mi" 0 10 10 10 Mittwochs im März jedes Jahr um 14:10 Uhr und 14:44 Uhr jedes Jahr um 14:10 Uhr und 2:44 Uhr jedes Jahr um 14:10 Uhr und 2:44 Uhr jedes Jahr um 14:10 Uhr und 2:44 Uhr jedes Jahr um 15 10? * Mon-Fr "0 15 10 15 *?" 0 15 10 15 *? "0 15 10 15 10 15 *?" 0 15 15 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1 10 ? * 6L 2002-2005 "Ausgelöst am letzten Freitag im Monat von 2002 bis 2005" 0 15 10? * 6#3 ", ausgelöst am dritten Freitag eines Monats um 10:15 Uhr ausgelöst
Der obige Artikel Spring integriert Quartz in die Implementierung der Zeitplanung für die Zeitvergabeaufgabe. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.