spring:quartz的总结
Quartz 是一个强大的企业级 Schedule 工具,也是目前最好的开源 Schedule 工具。Spring中也集成了quartz的应用,下面就讲一下如何在spring中使用quartz。
spring的配置:
xml 代码
<bean id="schedulerFactoryBean" "+this.dateRange.getStartDate().getHours()+" ";
switch(this.frequency.getType()){
case 0://无重复提醒
quartzStr += this.dateRange.getStartDate().getDate()+" "+(this.dateRange.getStartDate().getMonth()+1)+" ? "+(this.dateRange.getStartDate().getYear()+1900);
tiggernote+="起始时间:"+quartzStr;
break;
case 1://每XX天提醒
quartzStr += "*/"+this.frequency.getEvery()+" * ? ";
tiggernote+="每"+this.frequency.getEvery()+"提醒";
break;
case 2://每个工作日detail=1,2,3,4,5
//quartzStr += "? * 2-6";
quartzStr ="0 */1 * * * ?"; //测试
tiggernote+="每个工作日1,2,3,4,5提醒";
break;
case 3://每every周后的星期detail日
quartzStr += "? * "+this.frequency.getDetail()+"/"+this.frequency.getEvery();
tiggernote+="每"+this.frequency.getEvery()+"周星期"+this.frequency.getDetail()+"日";
break;
case 4://每every个月的detail日
quartzStr += this.frequency.getDetail()+" */"+this.frequency.getEvery()+" ?";
tiggernote+="每"+this.frequency.getEvery()+"月"+this.frequency.getDetail()+"日";
break;
case 5://每every个月的第num1个星期num2
quartzStr += "? */"+this.frequency.getEvery()+" "+this.frequency.getNum2();
//星期
if(Integer.valueOf(this.frequency.getNum1()).intValue()>0){
quartzStr += "#"+this.frequency.getNum1();
tiggernote+="每"+this.frequency.getEvery()+"月第"+this.frequency.getNum1()+"个星期"+this.frequency.getNum2()+"日";
}else{
quartzStr += "L";
tiggernote+="每"+this.frequency.getEvery()+"月星期"+this.frequency.getNum2();
}
break;
case 6://每年num1月num2日
quartzStr += this.frequency.getNum2()+" "+this.frequency.getNum1()+" ?";
tiggernote+="每年"+this.frequency.getNum1()+"月"+this.frequency.getNum2()+"日";
break;
case 7://每年every月的第num1个星期num2
quartzStr += "? "+this.getFrequency().getEvery()+" "+this.getFrequency().getNum2();
//星期
if(Integer.valueOf(this.frequency.getNum1()).intValue()>0){
quartzStr += "#"+this.frequency.getNum1();
tiggernote+="每年"+this.getFrequency().getEvery()+"月的第"+this.frequency.getNum1()+"个星期"+this.getFrequency().getNum2()+"日";
}else{
quartzStr += "L";
tiggernote+="每年"+this.getFrequency().getEvery()+"月的"+this.getFrequency().getNum2()+"日";
}
break;
default :
}
log.debug("quartzStr="+quartzStr);
return quartzStr;
}
Scheduler:
Scheduler 是一个计划集,其中可以包含多个 JobDetail 和 Trigger 组成的计划任务。
在Quartz中,我们可以通过
SchedulerFactory scheduleFactory = new StdSchedulerFactory();
Scheduler scheduler = scheduleFactory.getScheduler();
来取得scheduler,通过调用scheduler.start()来启动quartz。
在spring中,org.springframework.scheduling.quartz.SchedulerFactoryBean是对 Quartz的org.quartz.Scheduler的封装,通过上面的配置,在spring启动的时候,quartz就会跟随着启动,不需要再用 scheduler.start()来启动。在spring中,如果要取得scheduler,可通过上面的配置文件那样,将 SchedulerFactoryBean注入到schdeuler中。