您的位置:首页 > 编程语言 > Java开发

spring quartz 实现定时任务及常见问题

2014-03-29 17:57 453 查看
spring中定时任务包括三个部分

Job 表示需要定时处理的事情

Trigger 表示事件触发的时间点

Sceduler 调度器

其中 Job与Trigger是一对一关系,而Sceduler与Trigger是一对多关系

详细配置文件内容文章已介绍清楚 http://bbs.tianya.cn/post-53594-13-1.shtml
JobTask.java 定义定时处理任务

import java.util.Date;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class TaskJob {
private static final Logger log = LoggerFactory.getLogger(TaskJob.class);
public void sayHello(){
try{
log.info("task begin:");
System.out.println(new Date().toString());
log.info("task end!");
}catch(Exception e){
log.error("error",e);
}
}

}

spring配置文件 applicationContext.xml需要配置对应的bean等

<bean name="taskJob" class="com.movies.Task.TaskJob"/>
<!-- 定时任务 -->
<bean id="methodInvokeJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="taskJob"/>
</property>
<property name="targetMethod">
<value>sayHello</value>
</property>
</bean>
<!-- 配置触发器 -->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="methodInvokeJobDetail"/>
</property>
<!-- 触发的时机 -->
<property name="cronExpression">
<value>0 * 08-21 * * ?</value>
</property>
</bean>
<!-- 调度器配置 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="cronTrigger"/>
</list>
</property>
</bean>

cronExpression触发时机的格式可参考:http://www.360doc.com/content/10/0127/14/36589_14507247.shtml

常见问题 :

1、“org.springframework.scheduling.quartz.CronTriggerBean”没有对应属性cronExpression的setter方法 缺少quartz-all-1.6.0.jar包

2、org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'methodInvokingJobDetail' defined in class path resource [config/spring/spring-biz.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError:
org/apache/commons/collections/SetUtils

Caused by:

java.lang.NoClassDefFoundError: org/apache/commons/collections/SetUtils

这个要增加commons-collections-3.1.jar

其他问题请参考:/article/2792675.html



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: