spring3 + Quartz1.8.6 Schuduler Example

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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章