Spring定时任务Quartz配置

第一种,作业类继承自特定的基类: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

Xml代码 
<bean name="job1" class="org.springframework.scheduling.quartz.JobDetailBean">  
<property name="jobClass" value="com.gy.Job1" />  
<property name="jobDataAsMap">  
<map>  
<entry key="timeout" value="0" />  
</map>  
</property>  
</bean>  

 说明:org.springframework.scheduling.quartz.JobDetailBean有两个属性,jobClass属性即我们在java代码中定义的任务类,jobDataAsMap属性即该任务类中需要注入的属性值。

第三步:配置作业调度的触发方式(触发器)

Quartz的作业触发器有两种,分别是

org.springframework.scheduling.quartz.SimpleTriggerBean

org.springframework.scheduling.quartz.CronTriggerBean

第一种SimpleTriggerBean,只支持按照一定频度调用任务,如每隔30分钟运行一次。

配置方式如下:

Xml代码  收藏代码
  1. <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">  
  2. <property name="jobDetail" ref="job1" />  
  3. <property name="startDelay" value="0" /><!-- 调度工厂实例化后,经过0秒开始执行调度 -->  
  4. <property name="repeatInterval" value="2000" /><!-- 每2秒调度一次 -->  
  5. </bean>  

第二种CronTriggerBean,支持到指定时间运行一次,如每天12:00运行一次等。

配置方式如下:

Xml代码  收藏代码
  1. <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
  2. <property name="jobDetail" ref="job1" />  
  3. <!—每天12:00运行一次 -->  
  4. <property name="cronExpression" value="0 0 12 * * ?" />  
  5. </bean>  

 关于cronExpression表达式的语法参见附录。

第四步:配置调度工厂 

Xml代码  收藏代码
  1. <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
  2. <property name="triggers">  
  3. <list>  
  4. <ref bean="cronTrigger" />  
  5. </list>  
  6. </property>  
  7. </bean>  

 说明:该参数指定的就是之前配置的触发器的名字。

第五步:启动你的应用即可,即将工程部署至tomcat或其他容器。

原文地址:https://www.cnblogs.com/GotoJava/p/6093445.html