Quartz Job & Spring
在实际项目应用中经常会用到定时任务,可通过Quartz框架轻松完成。在Web项目中,如果用Spring框架管理Quartz,在Web容器启动或关闭时自动启动、关闭Quartz中的任务,非常方便。
传统的MethodInvokingJobDetailFactoryBean
运行方式,配置复杂,且不够灵活——如果要动态改变任务的状态、cron表达式等就需要改变配置甚至代码需要重启服务器了。因此,我采取动态任务调度的方式,可自由控制任务进度,更可以显示到html页面上。
配置
只需要在Spring配置文件中加上SchedulerFactoryBean。
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean" autowire="no"></bean>
这样,Spring就为我们创建了一个空的Scheduler,我们后面手动添加任务进去。
任务
我们定义一个Job类,任务都在这个Job类上执行
public class QuartzJobFactory implements Job {
public void execute(JobExecutionContext context)
throws JobExecutionException{
System.out.println("任务执行了");
}
}
既然记录任务状态,那就需要定义一个类了,我们定义一个ScheduleJob
,
public class ScheduleJobDomain {
private String jobId; //任务id
private String jobName; //任务名称
/** 任务状态 */
private String jobStatus;
private String quartz; //cron表达式
//省略get、set方法
}
再定义一个Service