第一步:编写任务类
/** * 定时任务 * @Auther: JacobYang * @Date: 2018/5/22 16:04 * @Description: */ public class TimerManager { public void doJob() {
System.out.println("-调度任务进行中..."); } }
第二步:配置XML
<!--定时任务--> <bean id="jobx" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <bean class="com.djfy.intercept.TimerManager" /> </property><!--类名--> <property name="targetMethod" value="doJob" /><!--方法名--> <property name="concurrent" value="false" /><!-- 作业不并发调度 --> </bean>
<!--这是第三步的触发器配置-->
<bean id="
cronTrigger
"
class
="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"
>
<
property
name
="jobDetail"
ref
="
jobx
"
/>
<
property
name
="startDelay"
value
="1000"
/>
<!--
调
度工厂
实
例化后,
经过
1秒开始
执
行
调
度 -->
<
property
name
="repeatInterval"
value
="3000"
/>
<!-- 每3秒
调
度一次 -->
</
bean
>
<!--第四步:配置调度工厂--> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="cronTrigger" /> </list> </property> </bean>(注:同颜色字体,俩名称必须一样 我的任务是每天定时(23.59)执行,到这里你的定时任务已经完成,可以不看下面)
第三步:配置触发方式(触发器)
Quartz的作业触发器有两种,分别是
org.springframework.scheduling.quartz.SimpleTriggerBean
org.springframework.scheduling.quartz.CronTriggerBean
第一种SimpleTriggerBean,只支持按照一定频度调用任务,如每隔30分钟运行一次。
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"> <property name="jobDetail" ref="jobx" /> <property name="startDelay" value="1000" /><!-- 调度工厂实例化后,经过1秒开始执行调度 --> <property name="repeatInterval" value="30000" /><!-- 每30秒调度一次 --> </bean>
第二种CronTriggerBean,支持到指定时间运行一次,如每天23.59运行一次等。
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="jobx" /> <!--每天23:59运行一次 --> <property name="cronExpression" value="0 59 23 * * ?" /> </bean>
第四步:配置调度工厂
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="cronTrigger" /> </list> </property> </bean>
(可查看问w3cschool)
附录:
cronExpression的配置说明
字段 | 允许值 | 允许的特殊字符 |
秒 | 0-59 | , - * / |
分 | 0-59 | , - * / |
小时 | 0-23 | , - * / |
日期 | 1-31 | , - * ? / L W C |
月份 | 1-12 或者 JAN-DEC | , - * / |
星期 | 1-7 或者 SUN-SAT | , - * ? / L C # |
年(可选) | 留空, 1970-2099 | , - * / |
- | 区间 |
* | 通配符 |
? | 你不想设置那个字段 |
CRON表达式 | 含义 |
"0 0 12 * * ?" | 每天中午十二点触发 |
"0 15 10 ? * *" | 每天早上10:15触发 |
"0 15 10 * * ?" | 每天早上10:15触发 |
"0 15 10 * * ? *" | 每天早上10:15触发 |
"0 15 10 * * ? 2005" | 2005年的每天早上10:15触发 |
"0 * 14 * * ?" | 每天从下午2点开始到2点59分每分钟一次触发 |
"0 0/5 14 * * ?" | 每天从下午2点开始到2:55分结束每5分钟一次触发 |
"0 0/5 14,18 * * ?" | 每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发 |
"0 0-5 14 * * ?" | 每天14:00至14:05每分钟一次触发 |
"0 10,44 14 ? 3 WED" | 三月的每周三的14:10和14:44触发 |
"0 15 10 ? * MON-FRI" | 每个周一、周二、周三、周四、周五的10:15触发 |