在Spring Boot中使用Quartz,您可以通过添加spring-boot-starter-quartz
依赖来简化配置。以下是一个简单的示例,展示了如何在Spring Boot应用程序中和使用Quartz。
- 首先,在
pom.xml
文件中添加spring-boot-starter-quartz
依赖:
<dependencies>
...
dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
...
</dependencies>
- 创建一个Quartz Job类。这个类需要实现
org.quartz.Job
接口,并实现execute
方法:
import org.quartz.Job;
org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("Hello, Quartz!");
}
}
- 在Spring Boot配置类中配置Quartz:
import org.quartz.JobDetail;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.JobDetailFactoryBean;
import org.springframework.scheduling.quartz.SimpleTriggerFactoryBean;
@Configuration
public class QuartzConfig {
@Bean
public JobDetailFactoryBean myJobDetail() {
JobDetailFactoryBean jobDetailFactoryBean = new JobDetailFactoryBean();
jobDetailFactoryBean.setJobClass(MyJob.class);
jobDetailFactoryBean.setDurability(true);
return jobDetailFactoryBean;
}
@Bean
public SimpleTriggerFactoryBean myJobTrigger(JobDetail myJobDetail) {
SimpleTriggerFactoryBean trigger = new SimpleTriggerFactoryBean();
trigger.setJobDetail(myJobDetail);
trigger.setRepeatInterval(5000); // 每5秒执行一次
trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY); // 无限次重复
return trigger;
}
}
在这个示例中,我们创建了一个简单的Quartz Job,每5秒执行一次。
关于Quartz的cron表达式,它是一个包含6个或7个字段的字符串,用于定义任务的执行时间。字段顺序为:秒、分、小时、月中的天、月、周中的天可选)。
以下是一些cron表达式示例:
0 0 * * * *
:每小时的整点执行*/10 * * * *
:每10秒执行一次0 0 8-10 * * *
:每天的8点、9点和10点执行0 0 6,19 * * *
:每天的6:00 AM和7:00 PM执行00/30 8-10 * * *
:每天的8:00、8:30、9:00、9:30、10:00和10:300 0 9-17 * * MON-FRI
:工作日的9点至17点每小时执行0 0 0 25 12 ?
:每年圣诞节午夜执行
更多关于Quartz cron表达式的信息,您可以参考官方文:Quartz CronTrigger Tutorial。