一、第一种方式,配置的方式
1、配置文件,spring.xml
<!-- 自定义定时任务类 -->
<bean id="timingTasksJob" class="com.my.TimingTasksJob"></bean>
<!-- 定时任务 -->
<bean id="timingTasksJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="timingTasksJob" />
</property>
<property name="targetMethod">
<value>execTask</value>
</property>
<property name="concurrent">
<value>false</value>
</property>
</bean>
<!-- 触发器 -->
<bean id="timingTasksJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="timingTasksJobDetail" />
<property name="cronExpression" value="0 0 2 * * ?" /> <!-- 定时任务时间配置 -->
</bean>
<!-- 调度器 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="timingTasksJobTrigger" />
</list>
</property>
</bean>
2、自定义定时任务类,在此仅写一个概况
//定时任务类
public class TimingTasksJob
{
public void execTask()
{
//逻辑代码
}
}
3、定时任务时间配置说明(cron表达式)
cron表达式可为6位或者7位(第7位表示年,可不填写)
表达式结构:* * * * * * *
从左到右分别代表:秒(0-59),分(0-59), 小时(0-23),日(1-31),月(1-12), 周(1-7), 年(可选1970-2099)
特殊字符占位解释:(只是其中部分,后边整理好在上传)
* 表示所有值. 例如:在分的字段上设置 "*",表示每一分钟都会触发。
? 表示不指定值。使用的场景为不需要关心当前设置这个字段的值。
例如:要在每月的10号触发一个操作,但不关心是周几,所以需要周位置的那个字段设置为"?"
具体设置为 0 0 0 10 * ?
- 表示区间。例如 在小时上设置 "10-12",表示 10,11,12点都会触发。
, 表示指定多个值,例如在周字段上设置 "MON,WED,FRI" 表示周一,周三和周五触发
/ 用于递增触发。如在秒上面设置"5/15" 表示从5秒开始,每增15秒触发(5,20,35,50)。
在月字段上设置'1/3'所示每月1号开始,每隔三天触发一次。