1.依赖jar文件
org.springframework.spring-core 3.1.2.RELEASE
org.springframework.spring-context-support 3.1.2.RELEASE
org.springframework.spring-tx 3.1.2.RELEASE
org.quartz-scheduler.quartz 1.8.6
2.Scheule Task
Create a normal Java class, this is the class you want to schedule in Quartz
File : DelMeetingTask.java
package com.hyperats.v2;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import com.hyperats.exception.TransFailException;
public class DelMeetingTask {
public void printMe() {
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.format(new Date()) + "执行ExampleJob的定时任务");
}
}
3.Declare Quartz Schedule Job
With Spring, you can declare Quartz job in two ways :
3.1 MethodInvokingJobDetailFactoryBean
This is the simplest and straightforward method, suitable for simple scheduler.
<bean id="runMeJob"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="runMeTask" />
<property name="targetMethod" value="printMe" />
</bean>3.2 JobDetailBean
File : RunMeJob.java
package com.hyperats.v2;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
import com.hyperats.exception.TransFailException;
public class DelMeetingJob extends QuartzJobBean {
private DelMeetingTask delMeetingTask;
public void setDelMeetingTask(DelMeetingTask delMeetingTask) {
this.delMeetingTask = delMeetingTask;
}
@Override
protected void executeInternal(JobExecutionContext arg0)
throws JobExecutionException {
delMeetingTask.printMe();
}
}
<bean id="delMeetingTask" class="com.hyperats.v2.DelMeetingTask" />
<bean name="runMeJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.hyperats.v2.DelMeetingJob" />
<property name="jobDataAsMap">
<map>
<entry key="delMeetingTask" value-ref="delMeetingTask" />
</map>
</property>
</bean>
4.Triger
Configure Quartz trigger to define when will run your scheduler job. Two type of triggers are supported :
4.1 SimpleTrigger
It allows to set the start time, end time, repeat interval to run your job.
<bean id="simpleTrigger" class = "org.springframework.scheduling.quartz.SimpleTriggerBean"><property name="jobDetail" ref="runMeJob"/><property name="repeatInterval" value="5000"/><proterty name="startDelay value="1000"></bean>
4.2 CronTrigger
It allows Unix cron expression to specify the dates and times to run your job.
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="runMeJob" /> <property name="cronExpression" value="0 30 14 * * ?" /> </bean>5.Schedule Factory
Create a Scheduler factory bean to integrate both job detail and trigger together.
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="jobDetails"> <list> <ref bean="runMeJob" /> </list> </property> <property name="triggers"> <list> <ref bean="cronTrigger" /> </list> </property> </bean>