Spring Boot整合Quartz使用的详解
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean;
import org.springframework.scheduling.quartz.SimpleTriggerFactoryBean;
import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
@Configuration
public class QuartzConfig {
@Bean
public MethodInvokingJobDetailFactoryBean jobDetail() {
MethodInvokingJobDetailFactoryBean jobDetail = new MethodInvokingJobDetailFactoryBean();
jobDetail.setTargetBeanName("taskService"); // 指定调用的Bean名称
jobDetail.setTargetMethod("execute"); // 指定调用Bean中的方法
jobDetail.setConcurrent(false); // 是否允许任务并发执行
jobDetail.setName("sampleJob"); // 设置任务名称
return jobDetail;
}
@Bean
public SimpleTriggerFactoryBean simpleTrigger(MethodInvokingJobDetailFactoryBean jobDetail) {
SimpleTriggerFactoryBean trigger = new SimpleTriggerFactoryBean();
trigger.setJobDetail(jobDetail.getObject());
trigger.setStartTime(new Date()); // 设置开始时间
trigger.setRepeatInterval(2000); // 设置重复间隔时间
trigger.setRepeatCount(10); // 设置重复次数
trigger.setName("simpleTrigger"); // 设置触发器名称
return trigger;
}
@Bean
public CronTriggerFactoryBean cronTrigger() {
CronTriggerFactoryBean trigger = new CronTriggerFactoryBean();
trigger.setJobDetail(jobDetail().getObject());
trigger.setCronExpression("0/5 * * * * ?"); // 设置cron表达式
trigger.setName("cronTrigger"); // 设置触发器名称
return trigger;
}
}
这个配置类定义了一个任务详情、一个简单的触发器和一个Cron触发器,它们都会调用taskService
中的execute
方法。这个例子展示了如何在Spring Boot应用程序中设置和配置Quartz任务调度。
评论已关闭