----------------------------------------------------第一种 继承QuartzJobBean-------------------------------------------------
public class TimeTask extends QuartzJobBean{
private int timeout;
@Override
protected void executeInternal(JobExecutionContext arg0)
throws JobExecutionException {
System.out.println("我是定时器....");
}
public int getTimeout() {
return timeout;
}
public void setTimeout(int timeout) {
this.timeout = timeout;
}
}
--------------------------------------------------Spring配置------------------------------------------------------------------------
- <!-- 配置作業類 -->
<bean name="myTimeTask" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.yojosources.admin.dao.TimeTask" />
<property name="jobDataAsMap">
<map>
<entry key="timeout" value="0" />
</map>
</property>
</bean>
<!-- 配置作业调度的触发方式(触发器)Quartz的作业触发器有两种,分别是
org.springframework.scheduling.quartz.SimpleTriggerBean
org.springframework.scheduling.quartz.CronTriggerBean-->
<!--
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="myTimeTask" />
<property name="startDelay" value="0" /> 调度工厂实例化后,经过0秒开始执行调度
<property name="repeatInterval" value="2000" /> 每2秒调度一次
</bean>
-->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="myTimeTask" />
<!--每天20秒运行一次 -->
<property name="cronExpression" value="*/20 * * * * ?" />
</bean>
<!-- 配置調度工廠 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger" />
</list>
</property>
</bean>
- --------------------------------------------第二种方式 不需要继承类----------------------------------------------------------------------------
public void getTimeTask(){
System.out.println("我是定時器...");
}
}
---------------------------------------------------------------Spring配置文件--------------------------------------------------------------------------------
<!-- 定时任务调度 -->
<bean name="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<!--必须,QuartzScheduler 延时启动,应用启动后 QuartzScheduler 再启动-->
<property name="startupDelay" value="60"/>
<!-- 普通触发器 :触发器列表-->
<property name="triggers">
<list>
<ref local="testTrigger"/>
</list>
</property>
</bean>
<!-- 配置执行定时任务的类和方法 -->
<bean id="testDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<bean class="com.yojosources.admin.dao.TimeTask"></bean>
</property>
<property name="targetMethod">
<value>getTimeTask</value>
</property>
</bean>
<!-- 配置触发器 -->
<bean id="testTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="testDetail"/> <!-- 触发器触发的 执行定时任务的bean -->
</property>
<property name="cronExpression">
<!-- 每天24时 --> <!-- 定时任务执行的间隔 -->
<value>00 00 00 * * ?</value>
</property>
</bean>
附录:
cronExpression的配置说明,具体使用以及参数请百度google
字段 允许值 允许的特殊字符
秒 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触发