Heim >Java >javaLernprogramm >Zwei Implementierungsmethoden des Spring-Timers in JAVA
Derzeit gibt es zwei beliebte Spring-Timer-Konfigurationen: Javas Timer-Klasse und OpenSymphonys Quartz.
1. Java-Timer-Timing
Erben Sie zuerst die Klasse java.util.TimerTask, um die in Spring definierte Ausführungsmethode
import java.util.TimerTask; public class EmailReportTask extends TimerTask{ @Override public void run() { ... } }
zu implementieren 🎜>
...Spring-Timer konfigurieren<bean id="scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask"> <property name="timerTask" ref="reportTimerTask" /> <property name="period"> <value>86400000value> property> bean>Das timerTask-Attribut teilt der ScheduledTimerTask mit, welche ausgeführt werden soll. 86400000 steht für 24 Stunden Spring-Timer startenSpring's TimerFactoryBean ist für das Starten geplanter Aufgaben verantwortlich
<bean class="org.springframework.scheduling.timer.TimerFactoryBean"> <property name="scheduledTimerTasks"> <list><ref bean="scheduleReportTask"/>list> property> bean>scheduledTimerTasks Displays eine Liste der Timer-Aufgaben, die gestartet werden müssen. Sie können den Start verzögern, indem Sie das Verzögerungsattribut festlegen
<bean id="scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask"> <property name="timerTask" ref="reportTimerTask" /> <property name="period"> <value>86400000value> property> <property name="delay"> <value>3600000value> property> bean>Wir können nur festlegen, dass diese Aufgabe alle 24 Stunden ausgeführt werden soll , was nicht genau ist. Starten Sie zu einem bestimmten Zeitpunkt 2. Quarz-Timer Erben Sie zuerst die QuartzJobBean-Klasse, um die Methode „executeInternal“ zu implementieren
import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean; public class EmailReportJob extends QuartzJobBean{ protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException { ... } }in Spring Definition in
<bean id="reportJob" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass"> <value>EmailReportJobvalue> property> <property name="jobDataAsMap"> <map> <entry key="courseService"> <ref bean="courseService"/> entry> map> property> bean>Hier deklarieren wir nicht direkt eine EmailReportJob Bean, sondern eine JobDetailBean. Dies ist ein Merkmal von Quarz. JobDetailBean ist eine Unterklasse von Quartzs org.quartz.JobDetail, die erfordert, dass ein Job-Objekt über das jobClass-Attribut festgelegt wird. Eine weitere Besonderheit bei der Verwendung von Quartz's JobDetail ist, dass das courseService-Attribut von EmailReportJob indirekt gesetzt wird. Die jobDataAsMap-Eigenschaft von JobDetail akzeptiert eine Map, einschließlich verschiedener Attribute, die auf jobClass festgelegt sind. Wenn JobDetailBean instanziiert wird, fügt es das courseService-Bean in die courseService-Eigenschaft von EmailReportJob ein. Timer startenDie org.quartz.Trigger-Klasse von Quartz beschreibt, wann und wie oft ein Quartz-Job ausgeführt werden soll. Spring bietet zwei Trigger, SimpleTriggerBean und CronTriggerBean.
<bean id="simpleReportTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail" ref="reprotJob" /> <property name="startDelay"> <value>360000value> property> <property name="repeatInterval"> <value>86400000value> property> bean>Laufzeit
Das cronExpression-Attribut gibt an, wann zu feuern. Das Geheimnisvollste ist der Cron-Ausdruck:
<bean id="cronReportTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="reprotJob" /> <property name="cronExpression"> <value>0 0 6 * * ?value> property> bean>Cron ist normalerweise für geplante Aufgaben in Linux-Systemen verantwortlich. Ein Cron-Ausdruck besteht aus mindestens 6 (möglicherweise 7) durch Leerzeichen getrennten Zeitelementen. Von links nach rechts: 1. Sekunden 2. Minuten 3. Stunden 4. Tag des Monats (1-31) 5. Monat (1-12 oder JAN-DEZ) 6. Tag der Woche ( 1-7 oder SUN-SAT) 7. Jahr (1970-2099)
Jedes Element zeigt einen Wert (z. B. 6), ein Intervall (9-12) und eine Liste (9, 11, 13) oder a an Platzhalterzeichen (*). Da sich die beiden Elemente 4 und 6 gegenseitig ausschließen, sollten Sie ein Fragezeichen (?) setzen, um das Feld anzugeben, das Sie nicht festlegen möchten, und „/“, wenn die Wertekombination die Anzahl der Wiederholungen angibt (10/6 bedeutet Wiederholung). 6 alle 10 Sekunden Zweitklassig).
Timer starten
Das Trigger-Attribut akzeptiert eine Reihe von Triggern.
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list><ref bean="cronReportTrigger"/>list> property> bean>Okay, das ist das Ende dieses Artikels, aber es gibt einige Mängel. Sie können mir gerne Ihre wertvollen Meinungen mitteilen. Weitere verwandte Artikel zu den beiden Implementierungsmethoden des Spring Timers in JAVA finden Sie auf der chinesischen PHP-Website!