spring3 + Quartz1.8.6 Schuduler Example

来源:互联网 发布:访客网络设置 编辑:程序博客网 时间:2024/06/05 17:36

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 JobDetailBeanFile : 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>
0 0
原创粉丝点击