Java-eigenes Java-Dienstprogramm .Timer-Klasse. Mit dieser Klasse können Sie eine java.util.TimerTask-Aufgabe planen. Mit dieser Methode kann Ihr Programm mit einer bestimmten Häufigkeit, jedoch nicht zu einem bestimmten Zeitpunkt ausgeführt werden.
Verwenden Sie Quartz, einen relativ leistungsstarken Scheduler, der es ermöglicht, Ihr Programm zu einem bestimmten Zeitpunkt oder in einer bestimmten Häufigkeit auszuführen. Die Konfiguration ist etwas kompliziert.
Die Aufgaben, die mit Spring 3.0 und höher geliefert werden, können als leichter Quartz betrachtet werden und sind viel einfacher zu verwenden als Quartz.
Job-Klassen müssen von einer bestimmten Job-Klasse-Basisklasse erben. Beispielsweise muss Quartz von org.springframework.scheduling.quartz.QuartzJobBean erben; java.util.Timer muss von java.util.TimerTask erben.
Die Jobklasse ist eine gewöhnliche Java-Klasse und muss nicht von einer Basisklasse erben.
Hinweis: Ich persönlich empfehle die Verwendung der zweiten Methode, da alle Klassen gemeinsame Klassen sind und nicht im Vorfeld unterschiedlich behandelt werden müssen.
wird zu jeder angegebenen Zeit ausgelöst. Der entsprechende Auslöser in Quartz ist: org.springframework.scheduling.quartz.SimpleTriggerBean
Alles wird einmal ausgelöst zum angegebenen Zeitpunkt. Der entsprechende Scheduler in Quartz ist: org.springframework.scheduling.quartz.CronTriggerBean
Hinweis: Nicht jede Aufgabe kann diese beiden Trigger verwenden .TimerTask-Aufgaben können nur die erste verwenden. Sowohl die Quarz- als auch die Federaufgabe können diese beiden Auslösebedingungen unterstützen.
Stellen Sie detailliert vor, wie Sie die einzelnen Aufgabenplanungstools verwenden, einschließlich Quarz- und Frühlingsaufgaben.
Schritt 1: Definieren Sie die Jobklasse
import org.quartz.JobExecutionContext; >
privat int timeout
private static int i = 0;
//After the Die Planungsfabrik wird instanziiert, die Planung beginnt nach der Timeout-Zeit
int timeout) { this.timeout = timeout;
}
/**
* Spezifische Aufgaben, die geplant werden sollen
*/
wirft JobExecutionException {
"Geplante Aufgabenausführung...");
}
Schritt 2: Konfigurieren Sie die Jobklasse JobDetailBean in der Spring-Konfigurationsdatei
Xml-Code
bean name="job1" class="org.springframework.scheduling.quartz.JobDetailBean">
Eigenschaft name= "jobClass" value="com.gy.Job1" />
Eigenschaft name= „jobDataAsMap“>
Karte>
Eintrag key="timeout" value=" 0" />
Karte>
Eigenschaft>
Bohne>
说明:org.springframework.scheduling.quartz.JobDetailBean有两个属性,jobClass属性即我们在java代码中定义的任务类,jobDataAsMap属性即该任务类中需要注入的属性值.
第三步:配置作业调度的触发方式(触发器)
Quarz的作业触发器有两种,分别是
org.springframework.scheduling.quartz.SimpleTriggerBean
org.springframework.scheduling.quartz.CronTriggerBean
第一种SimpleTriggerBean,只支持按照一定频度调用任务,如每隔30分钟运行一次.
配置方式如下:
bean id="simpleTrigger" class="org.springframework.scheduling. quartz.SimpleTriggerBean">
Eigenschaft name= "jobDetail" ref="job1" />
Eigenschaft name= "startDelay" value="0" />
property name= "repeatInterval" value="2000" />
Bohne> ;
第二种CronTriggerBean, 支持到指定时间运行一次, 如每天12:00运行一次等。
配置方式如下:
bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
Eigenschaft name= "jobDetail" ref="job1" > >property
value="0 0 12 * * ?" /> >
bean 🎜> Die Syntax des cronExpression-Ausdrucks finden Sie im Anhang. Schritt 4: Planungsfabrik konfigurieren Xml-Code
bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
property
name=list> >ref bean="cronTrigger" /> >
listSchritt 5: Starten Sie einfach Ihre Anwendung, d. h. stellen Sie das Projekt in Tomcat oder anderen Containern bereit. Zweitens erbt die Jobklasse keine bestimmte Basisklasse. Spring kann diesen Ansatz dank zweier Klassen unterstützen:
org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBeanDiese beiden Klassen entsprechen jeweils den beiden von Spring unterstützten Methoden der Aufgabenplanung, nämlich der Timer-Aufgabenmethode und der Quartz-Methode, die wie oben erwähnt mit Java geliefert werden. Hier schreibe ich nur über die Verwendung von MethodInvokingJobDetailFactoryBean. Der Vorteil der Verwendung dieser Klasse besteht darin, dass unsere Aufgabenklasse nicht mehr von einer Klasse erben muss, sondern ein gewöhnliches Pojo ist. Schritt eins: Aufgabenklasse schreiben
Java-Code public class Job2 {
public void doJob2() {
}
Wie Sie sehen, ist dies eine gewöhnliche Klasse und hat eine Methode. Schritt 2: Jobklasse konfigurieren
Xml-Code
bean id="job2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> property name="targetObject"> bean class="com.gy.Job2 " /> Eigenschaft> property name="targetMethod" value=" doJob2" /> Eigenschaft name= "concurrent" value="false" /> Bohne> ; 说明:有两个关键属性:targetObject ist die neueste Version von targetMethod的方法.往下的步骤就与方法一相同了,为了完整,同样贴出. 第三步:配置作业调度的触发方式(触发器) Quartz的作业触发器有两种,分别是 org.springframework.scheduling.quartz.SimpleTriggerBean org.springframework.scheduling.quartz.CronTriggerBean 第一种SimpleTriggerBean,只支持按照一定频度调用任务,如每隔30分钟运行一次。 配置方式如下: bean id="simpleTrigger" class="org.springframework.scheduling.quartz .SimpleTriggerBean"> Eigenschaft name= "jobDetail" ref="job2" /> Eigenschaft name= "startDelay" value="0" /> property name= "repeatInterval" value="2000" /> Bohne> ; 第二种CronTriggerBean, 支持到指定时间运行一次, 如每天12:00运行一次等。 配置方式如下: bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> Eigenschaft name= "jobDetail" ref="job2" Eigenschaft name="cronExpression" value="0 0 12 * * ?" /> >bean> Sie können je nach tatsächlicher Situation eine der beiden oben genannten Planungsmethoden auswählen. Xml-Code
"org.springframework.scheduling.quartz.SchedulerFactoryBean">
Schritt 5: Starten Sie einfach Ihre Anwendung, d. h. stellen Sie das Projekt in Tomcat oder anderen Containern bereit. Zu diesem Zeitpunkt wurde die Grundkonfiguration von Quartz in Spring eingeführt. Natürlich müssen Sie vor der Verwendung das entsprechende Spring-Paket und das Quartz-Paket importieren Mehr ist nicht nötig.
Bitte sehen Sie sich unten meine Einführung zur Frühlingsaufgabe an. Spring-TaskIm vorherigen Abschnitt wurde die Verwendung von Quartz in Spring vorgestellt. In diesem Artikel wird das selbst entwickelte Tool für geplante Aufgaben nach Spring 3.0 vorgestellt, das Es ist wie ein leichter Quarz und erfordert keine zusätzlichen Pakete außer Spring-bezogenen Paketen. Diese beiden werden im Folgenden vorgestellt. Der erste: Konfigurationsdateimethode
Der erste Schritt: Schreiben Sie die Jobklasse, die ein gewöhnliches Pojo ist, wie folgt: Java-Code
import org.springframework.stereotype.Service;
public
void job1() {}
. . . . . . xsi:schemaLocation="http://www.springframework.org/schema/task "
> >Schritt 3: Legen Sie bestimmte Aufgaben in der Spring-Konfigurationsdatei fest
Xml-Code
task:scheduled-tasks>
task:scheduled
task:scheduled-tasks> >context:component-scan base-package=" com.gy.mytask " />
Erläuterung: Der ref-Parameter gibt die Task-Klasse an, die Methode gibt die Methode an, die Es müssen Cron- und CronExpression-Ausdrücke ausgeführt werden. Die spezifische Schreibmethode wird hier nicht vorgestellt. Einzelheiten finden Sie im Anhang des vorherigen Artikels.Die Konfiguration ist hier abgeschlossen, ist das nicht sehr einfach? Zweitens: Verwenden Sie das Annotationsformular Vielleicht möchten wir es nicht jedes Mal in der XML-Datei konfigurieren, wenn wir eine Aufgabenklasse schreiben. Schauen wir uns das an in der Quelldatei. Definition der Anmerkung:
@Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Scheduled
{
public abstract String cron() ;
public abstract long FixedDelay();
public abstract long FixedRate(); 🎜>
}Schritt 1: Pojo schreiben
Java-Code
Klasse TaskJob {
@Scheduled(cron =
public
System.out.println("Task in progress. . ”);
Schritt 2: Aufgabenbezogene Konfiguration hinzufügen:
Xml-Codexml version="1.0" encoding="UTF-8"?>
Beans xmlns= „http://www.springframework.org/schema/beans“
xmlns:xsi=“ http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation ="
"
default-lazy-init="falsch">
context:annotation-config />
>
context:component-scan base-package="com.gy.mytask" /> ;
>
task:annotation-driven scheduler="qbScheduler" mode="proxy" />
task:scheduler id="qbScheduler" pool-size="10"/>
Hinweis: Theoretisch müssen Sie nur den Konfigurationssatz
Ok, die Konfiguration ist abgeschlossen. Natürlich gibt es noch viele Parameter. Weitere Informationen finden Sie im XSD-Dokument.
Anhang:
cronExpression-Konfigurationsanweisungen, für spezifische Verwendung und Parameter bitte Baidu google
Feld erlaubt Werte Erlaubte Sonderzeichen
Sekunden 0-59 , - * /
Minuten 0-59 , - * /
Stunde 0-23 , - * /
Datum 1-31 , - * ? / L W C
Monat 1 -12 oder JAN-DEZ , - * /
Woche 1-7 oder SO-SA , - * ? / L C #
Jahr (Optional) Leer lassen, 1970-2099 , - * /
- Intervall
* Platzhalter
? Sie möchten dieses Feld nicht festlegen
Das Folgende sind nur einige Beispiele
CRON-Ausdruck Formel Bedeutung
"0 0 12 * * ?" Wird jeden Tag um 12 Uhr mittags ausgelöst
"0 15 10 ? * *" Jeden Morgen um 10:15 Uhr
"0 15 10 * * ?" Wird jeden Morgen um 10:15 Uhr
"0 15 10" ausgelöst * * ? * " Ausgelöst jeden Morgen um 10:15
"0 15 10 * * ? * Ausgelöst jeden Morgen um 10:15 im Jahr 2005
" 0 * 14 * * ?" Wird jeden Tag von 14:00 bis 14:59 Uhr ausgelöst
"0 0/5 14 * * ?" ab 14 Uhr Auslösung alle 5 Minuten bis Ende 14:55 Uhr
"0 0/5 14,18 * * ?" Jeden Tag von 14 Uhr bis 14:55 Uhr und 18 Uhr bis 18 Uhr Wird alle 5 Minuten in zwei Zeiträumen von 55 Minuten ausgelöst
"0 0-5 14 * * ?" Wird jeden Tag einmal pro Minute von 14:00 bis 14:05 Uhr ausgelöst
"0 10,44 14 ? 3 MI" Wird jeden Mittwoch um 14:10 und 14:44 im März ausgelöst
"0 15 10 ? * MO-FR“ wird jeden Montag, Dienstag, Mittwoch, Donnerstag und Freitag um 10:15 Uhr ausgelöst
Das obige ist der detaillierte Inhalt vonVerwendungsanweisungen für im Frühling geplante Aufgaben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!