第一种,作业类继承自特定的基类:org.springframework.scheduling.quartz.QuartzJobBean。
第一步:定义作业类
1 import org.quartz.JobExecutionContext; 2 import org.quartz.JobExecutionException; 3 import org.springframework.scheduling.quartz.QuartzJobBean; 4 public class Job1 extends QuartzJobBean { 5 6 private int timeout; 7 private static int i = 0; 8 //调度工厂实例化后,经过timeout时间开始执行调度 9 public void setTimeout(int timeout) { 10 this.timeout = timeout; 11 } 12 13 /** 14 * 要调度的具体任务 15 */ 16 @Override 17 protected void executeInternal(JobExecutionContext context) 18 throws JobExecutionException { 19 System.out.println("定时任务执行中…"); 20 } 21 }
第二步:spring配置文件中配置作业类JobDetailBean
说明:org.springframework.scheduling.quartz.JobDetailBean有两个属性,jobClass属性即我们在java代码中定义的任务类,jobDataAsMap属性即该任务类中需要注入的属性值。
第三步:配置作业调度的触发方式(触发器)
Quartz的作业触发器有两种,分别是
org.springframework.scheduling.quartz.SimpleTriggerBean
org.springframework.scheduling.quartz.CronTriggerBean
第一种SimpleTriggerBean,只支持按照一定频度调用任务,如每隔30分钟运行一次。
配置方式如下:
- <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
- <property name="jobDetail" ref="job1" />
- <property name="startDelay" value="0" /><!-- 调度工厂实例化后,经过0秒开始执行调度 -->
- <property name="repeatInterval" value="2000" /><!-- 每2秒调度一次 -->
- </bean>
第二种CronTriggerBean,支持到指定时间运行一次,如每天12:00运行一次等。
配置方式如下:
- <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
- <property name="jobDetail" ref="job1" />
- <!—每天12:00运行一次 -->
- <property name="cronExpression" value="0 0 12 * * ?" />
- </bean>
关于cronExpression表达式的语法参见附录。
第四步:配置调度工厂
- <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
- <property name="triggers">
- <list>
- <ref bean="cronTrigger" />
- </list>
- </property>
- </bean>
说明:该参数指定的就是之前配置的触发器的名字。
第五步:启动你的应用即可,即将工程部署至tomcat或其他容器。