Spring 中集成了Quartz的工具,我们在Spring中使用的定时任务也是基于Quartz的,常用的有两种配置方式,一种是设置在系统启动后多少秒启动,然后在多久后重复执行,另外一种是比较灵活的设置方式可以设置在指定的某天某个时段执行,两者只是在任务本身的配置上不同而已,最终都是通过一个统一的方法进行加载执行。
简单方式的定时器
第一步 创建定时任务类
第二步 在Spring配置文件中配置定时任务
完整定时任务的配置可以参考下面这个链接的说明,主要区别就在于创建基础任务类的方式和Spring中任务配置的一点区别,统一调度都是一样的配置方式。
http://kai2008.iteye.com/blog/435675
简单方式的定时器
第一步 创建定时任务类
package cn.net.withub.ncs.core;
import java.sql.Date;
import java.util.List;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.JobDetailBean;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class TaskBean {
public TaskBean() {
// TODO Auto-generated constructor stub
}
public void execute(){
//执行要做的操作
}
}
第二步 在Spring配置文件中配置定时任务
<!--配置基础类的信息-->
<bean id="taskBean" class="cn.net.withub.ncs.core.TaskBean" />
<!--配置转换器信息,主要用于把普通类转换成可用的任务类,指定原始类引用和调用的方法名-->
<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="taskBean" />
<property name="targetMethod" value="execute" />
<property name="concurrent" value="false" /> <!--这是配置任务是否同步执行,就是说在前一个任务未执行完的时候是否继续计算时间来启动下一次任务,建议FALSE来保证任务的完整工作-->
</bean>
<!--配置简单定时任务的处理方法,开始时间,和重启执行周期-->
<bean id="simpleReportTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail">
<ref bean="jobDetail"/>
</property>
<property name="startDelay">
<value>5000</value>
</property>
<property name="repeatInterval">
<value>1000</value>
</property>
</bean>
<!--配置统一调度任务的类,LIST里面可以是多个-->
<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="simpleReportTrigger"/>
</list>
</property>
</bean>
完整定时任务的配置可以参考下面这个链接的说明,主要区别就在于创建基础任务类的方式和Spring中任务配置的一点区别,统一调度都是一样的配置方式。
http://kai2008.iteye.com/blog/435675