- 加入必要的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
- 定义
jobDetail
的两个bean
注意第一个是bean
,第二个就是单纯的java class
@Component("MyFirstJob")
public class MyFirstJob {
public void sayHello(){
System.out.println("MyFirstJob:" + new Date());
}
}
第二个是单纯的java class
@Data
public class MySecondJob extends QuartzJobBean {
private String name;
@Override
protected void executeInternal(JobExecutionContext context){
System.out.println("hello:" + name + new Date());
}
}
- 将两个
jobBean
进一步包装成jobDetail
,并以bean
的形式进行configuration
@Configuration
public class QuartzJobDetailConfig {
@Bean("jobDetail1")
public MethodInvokingJobDetailFactoryBean jobDetail1() {
MethodInvokingJobDetailFactoryBean bean =
new MethodInvokingJobDetailFactoryBean();
bean.setTargetBeanName("MyFirstJob");
bean.setTargetMethod("sayHello");
return bean;
}
@Bean("jobDetail2")
JobDetailFactoryBean jobDetail2() {
JobDetailFactoryBean bean =
new JobDetailFactoryBean();
bean.setJobClass(MySecondJob.class);
JobDataMap jobDataMap = new JobDataMap();
jobDataMap.put("name", "finlay");
bean.setJobDataMap(jobDataMap);
return bean;
}
}
至此,已经定义了两个jobDetail
的bean
,分别是jobDetail1
和jobDetail2
。
- 接下来,定义
Trigger
的bean
以及开启Scheduler
,对Trigger
进行调度。@Configuration
public class QuartzConfig {
@Autowired
@Qualifier("jobDetail1")
public MethodInvokingJobDetailFactoryBean _jobDetail1;
@Autowired
@Qualifier("jobDetail2")
public JobDetailFactoryBean _jobDetail2;
@Bean()
SimpleTriggerFactoryBean simpleTriggerFactoryBean() {
SimpleTriggerFactoryBean bean =
new SimpleTriggerFactoryBean();
bean.setJobDetail(_jobDetail1.getObject());
bean.setRepeatCount(3);
bean.setStartDelay(1000);
bean.setRepeatInterval(2000);
return bean;
}
@Bean
CronTriggerFactoryBean cronTriggerFactoryBean() {
CronTriggerFactoryBean bean =
new CronTriggerFactoryBean();
bean.setJobDetail(_jobDetail2.getObject());
bean.setCronExpression("* * * * * ?");
return bean;
}
@Bean
SchedulerFactoryBean schedulerFactoryBean(){
SchedulerFactoryBean bean =
new SchedulerFactoryBean();
SimpleTrigger simpleTrigger =
simpleTriggerFactoryBean().getObject();
CronTrigger cronTrigger =
cronTriggerFactoryBean().getObject();
bean.setTriggers(simpleTrigger,cronTrigger);
return bean;
}
}