首先呢,很多项目都离不开定时调度,所以有了quartz这个框架。
参数名 | 类型 | 备注 |
name | String | 任务的名称,必须 |
group | String | 任务所在组,默认为DEFAULT |
jobClass | Class | 任务的实现类,必须 |
description | String | 描述 |
jobDataMap | JobDataMap | 用来给作业提供数据支持的数据结构 |
volatility | Boolean | 重启应用之后是否删除任务的相关信息,默认false |
durability | Boolean | 任务完成之后是否依然保留到数据库,默认false |
shouldRecover | Boolean | 应用重启之后时候忽略过期任务,默认false |
jobListeners | Set | 监听器 |
第一步是配置,在框架中的配置文件中进行配置job(作业)
<bean id="FileJob"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="com.CopyFileUrl" />//这里的vaule是一个继承了QuartzJobBean的类,里面写的就是你定时调度的任务
<property name="durability" value="true" />
</bean>
然后再配置Trigger(触发器)
<bean id="FileTrigger"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">//这个是定时调度
<property name="jobDetail" ref="FileJob" />//这里的ref就是上面的job的id
<property name="cronExpression" value="0 0/5 * * * ?" />
</bean>
<bean id="FileJobTrigger"
class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">//这个是循环调度
<property name="jobDetail" ref="FileJob" />
<property name="startDelay" value="10000" />//开启服务器10秒后执行
<property name="repeatInterval" value="80000" />//之后每隔80秒执行一次
</bean>
0 5/10 * * * ?是秒,分,时,日,月,年
每天的每个小时从5分开始5,15,25,35,45,55都执行一次,以此类推
最后再配置quartz的调度器
<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="FileTrigger" />
<ref bean="XXTrigger" />可以在这里写多个trigger
</list>
</property>
</bean>