依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
job
Job 表示要执行的代码,有2种方式:
- 普通bean,不能传递参数
- 继承
QuartzJobBean,可以传递参数
public class TestQuartz extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("test");
}
}
配置类
@Configuration
public class QuartzConfig {
@Bean
public JobDetail sampleJobDetail() {
return JobBuilder.newJob(TestQuartz.class).storeDurably().build();
}
@Bean
public Trigger sampleJobTrigger(){
// 每隔3秒执行一次
SimpleScheduleBuilder scheduleBuilder =
SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(6).repeatForever();
return TriggerBuilder.newTrigger().forJob(sampleJobDetail()).withSchedule(scheduleBuilder).build();
}
}
JobDetail
JobDetail 的配置有两种方式:
- MethodInvokingJobDetailFactoryBean。可以配置目标 Bean 的名字和目标方法的名字,这种方式不支持传参。
- JobDetailFactoryBean 。任务类继承自 QuartzJobBean ,这种方式支持传参,将参数封装在 JobDataMap 中进行传递。
Trigger
触发器,Quartz 中定义了多个触发器,常用:
- SimpleTrigger 设置简单定时
- CronTrigger 通过 cron 表达式设置定时