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>
<bean class="org.springframework.scheduling.timer.TimerFactoryBean"> <property name="scheduledTimerTasks"> <list><ref bean="scheduleReportTask"/>list> property> bean>
<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>
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 { ... } }
<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>
<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>
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>
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>