Quartz任务调度框架的使用.
1.描述
Quartz是一个完全由java编写的开源作业调度框架.
简单来说: 就是启动定时任务的框架.
2.案例1
@Test
public void quartzTest(){
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
scheduler.shutdown();
}
3.必须掌握两个对象 JobDetail和Trigger
4.案例二 simpleTrigger
public class helloJob implements Job(){
public void execute(JobExecutionContext context) throws JobExecutionException{
System.out.println("Hello, Quartz !!!");
}
}
@Test
public void quartzTest(){
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
JobDetail job = JobBuilder.newJob(HelloJob.class).withIndentity("job1","group1").build;
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("tigger1","group1").startNow().withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(5)).build();
scheduler.scheduleJob(job, trigger);
scheduler.start();
}
5.案例三: CronTrigger的使用
@Test
public void quartzTest(){
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
JobDetail job = JobBuilder.newJob(HelloJob.class).withIndentity("job1","group1").build;
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("tigger1","group1")
.withSchedule(CronScheduleBuilder.cronSchedule("0 0 0 ? * *"))
.build();
scheduler.scheduleJob(job, trigger);
scheduler.start();
}
注: 触发器表达式可以借助生成器生成: CronExpBuilder-1.0(触发器表达式生成器).jar
6.Spring整合Quartz
@Service("jobFactory")
public class JobFactory extends AdaptableJobFactory {
@Autowired
private AutowireCapableBeanFactory capableBeanFactory;
@Override
protected Object createJobInstance(TriggerFiredBundle bundle)
throws Exception {
Object jobInstance = super.createJobInstance(bundle);
capableBeanFactory.autowireBean(jobInstance);
return jobInstance;
}
}
public class PromotionJob implements Job {
@Autowired
private PromotionService promotionService;
@Override
public void execute(JobExecutionContext context)
throws JobExecutionException {
System.out.println("活动过期处理程序执行....");
promotionService.updateStatus(new Date());
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="promotionJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="cn.itcast.bos.quartz.PromotionJob" />
</bean>
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="promotionJob" />
<property name="startDelay" value="0" />
<property name="repeatInterval" value="2000" />
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="jobFactory" ref="jobFactory" />
<property name="triggers">
<list>
<ref bean="simpleTrigger"/>
</list>
</property>
</bean>
</beans>