Derzeit gibt es zwei beliebte Spring -Timer -Konfigurationen: die Timer -Klasse von Java und den Quarz von OpenSymphony.
1.Java Timer Timer
Erben Sie zunächst die Klasse java.util.timertask, um die Run -Methode zu implementieren
Java.util.TimerTask;
Definition im Frühjahr
...
Federtimer konfigurieren
<bean id = "plantulereportaskask"> <Eigenschaft name = "timerTask" ref = "reportTimerTask" /> <Eigenschaft name = "Periode"> <wert> 86400000Value> Eigenschaft> BE A>
Die TimerTask -Eigenschaft sagt, dass die geplante TimeTask ausgeführt werden soll. 86400000 repräsentiert 24 Stunden
Starten Sie den Frühlings -Timer
Die TimerFactoryBean von Spring ist für den Start der Zeitaufgabe verantwortlich
<Bean> <Property name = "teplanedTimerTasks"> <list> <ref bean = "planeReportask"/> list> Eigenschaft> Bean>
ScheduledTimerTasks zeigt eine Liste von Timeraufgaben an, die gestartet werden müssen.
Kann das Start verzögern, indem das Attribut des Verzögerungsattributs festgelegt wird
<bean id = "plantulereportask"> <Eigenschaft name = "timerTask" ref = "reportTimerTask" /> <Eigenschaft name = "Periode"> <wert> 86400000Value> Eigenschaft> <p Roperty name = "delay"> <werts> 3600000Value > Eigenschaft> Bean>
Wir können nur festlegen, dass diese Aufgabe alle 24 Stunden ausgeführt werden kann und nicht zu einem bestimmten Zeitpunkt genau gestartet werden kann
2. Quarz -Timer
Erben Sie zunächst die Quarzjob -Klasse, um die ExecuteInternale Methode zu implementieren
org.quartz.jobexecutionContext;
Definition im Frühjahr
<bean id = "reportJob"> <Eigenschaft name = "jobClass"> <value> E -Mail -ReportjobValue> Eigenschaft> <Eigenschaft name = "JobDataasasMap"> <map> <eintrags key = "c urseserservice"> <ref bean = "CourseService" /> Eintrag> Karte> Eigenschaft> Bean>
Hier deklarieren wir keine E -Mail -Reportjob -Bean direkt, aber eine Jobdetailbean wird erklärt. Dies ist das Merkmal von Quarz. Jobdetailbean ist eine Unterklasse von Quartz's org.quartz.Jobdetail.
Eine weitere besondere Sache bei der Verwendung von Quartz 'JobDetails ist, dass die Kurseservice -Eigenschaft von Emailreportjob indirekt festgelegt wird. Das JobDataasmap -Eigentum von JobDetail akzeptiert eine Karte, einschließlich verschiedener Eigenschaften, die auf JobClass eingestellt sind, wann. Wenn JobDetailbean instanziiert ist, verleiht es die Kurseservice -Bohne in die Kurseservice -Eigenschaft des E -Mail -Reportjobs.
Starten Sie den Timer
Quartz's org.quartz.trigger -Klasse beschreibt, wann und in welcher Frequenz ein Quarzwerk ausgeführt wird. Die Frühling bietet zwei Trigger simpleTiggerbean und Crontriggerbean.
SimpliggerBean ähnelt geplante Timertasken. Gibt die Ausführungsfrequenz der Arbeit an und ahmt die Konfiguration der geplanten Timertasks nach.
<bean id = "simimeporttrigger"> <Eigenschaft name = "JobDetail" Ref = "Reprotjob" /> <Eigenschaft name = "startDelay"> <wert> 360000Value> Eigenschaft> <pro Perty name = "repualtinterval"> <wert> 86400000Value > Eigenschaft> Bean>
StartDelay verzögert sich auch um 1 Stunde, um zu beginnen
Crontriggerbean gibt die genaue Laufzeit für den Job an
<bean id = "conreporttrigger"> <Eigenschaft name = "JobDetail" Ref = "Reprotjob" /> <Eigenschaft name = "cronexpression"> <wert> 0 0 6 * *? Wert> Eigenschaft> Bean>
Das Attribut Cronexpression sagt, wann man feuern soll. Das Geheimnisvollste ist der Cron -Ausdruck:
Die Planungsaufgaben von Linux -Systemen werden normalerweise von Cron durchgeführt. Ein Cron -Ausdruck hat mindestens 6 (oder vielleicht 7) Zeitelemente, die durch Leerzeichen getrennt sind. Von links nach rechts:
1.Sec.2 Minuten.3 Stunden.4.Date im Monat (1-31) 5. Monate (1-12 oder Jan.-Dec) 6. 1970-2099)
Jedes Element zeigt einen angegebenen Wert (z. B. 6), ein Intervall (9-12), eine Liste (9, 11, 13) oder eine Wildcard (*). Da sich die beiden Elemente 4 und 6 gegenseitig ausschließen, sollten Sie ein Fragezeichen (?) Einstellen, um das Feld anzugeben, das Sie nicht festlegen möchten. 6 10 Sekunden wiederholen.
Starten Sie den Timer
<Bean> <Eigenschaft name = "Triggers"> <list> <ref bean = "cronreporttrigger"/> list> Eigenschaft> Bean>
Die Trigger -Eigenschaft akzeptiert eine Reihe von Triggern.
Okay, der Inhalt dieses Artikels endet hier.