Springboot配置Quartz
时间: 2023-11-20 09:10:17 浏览: 88
1. 添加依赖
在pom.xml文件中添加以下依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
```
2. 配置数据源
Quartz需要一个数据源来存储任务的信息,可以使用Spring Boot提供的jdbc数据源或者其他的数据源。在application.properties中配置数据源:
```
spring.datasource.url=jdbc:mysql://localhost:3306/quartz
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
```
3. 配置Quartz
在application.properties中配置Quartz的相关属性:
```
# Quartz配置
spring.quartz.job-store-type=jdbc
spring.quartz.jdbc.initialize-schema=always
spring.quartz.properties.org.quartz.threadPool.threadCount=10
```
其中,`spring.quartz.job-store-type`指定Quartz的存储类型,这里使用jdbc存储。`spring.quartz.jdbc.initialize-schema`表示是否在应用启动时初始化Quartz的数据库表结构。`spring.quartz.properties`用来配置Quartz的属性,这里设置线程池的数量为10。
4. 编写定时任务
创建一个继承Job类的定时任务:
```
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("Hello, Quartz!");
}
}
```
5. 配置定时任务
创建一个配置类,使用@Scheduled注解配置定时任务:
```
@Configuration
public class QuartzConfig {
/**
* 定时任务1
*/
@Scheduled(cron = "0/5 * * * * ?")
public void job1() throws SchedulerException {
JobDetail jobDetail = JobBuilder.newJob(MyJob.class)
.withIdentity("job1", "group1")
.build();
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.withSchedule(CronScheduleBuilder.cronSchedule("0/10 * * * * ?"))
.build();
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
scheduler.start();
scheduler.scheduleJob(jobDetail, trigger);
}
/**
* 定时任务2
*/
@Scheduled(cron = "0/10 * * * * ?")
public void job2() throws SchedulerException {
JobDetail jobDetail = JobBuilder.newJob(MyJob.class)
.withIdentity("job2", "group2")
.build();
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger2", "group2")
.withSchedule(CronScheduleBuilder.cronSchedule("0/15 * * * * ?"))
.build();
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
scheduler.start();
scheduler.scheduleJob(jobDetail, trigger);
}
}
```
使用@Scheduled注解配置定时任务,其中cron属性指定任务执行的时间。在job1和job2方法中,分别创建一个JobDetail和Trigger,并将它们添加到Scheduler中。
6. 启动应用
在Spring Boot应用中启动定时任务,让Quartz自动执行定时任务。
7. 总结
通过以上步骤,我们成功地配置了Quartz,并创建了两个定时任务。Quartz可以非常方便地管理和执行定时任务,为我们的应用带来了很大的便利。
阅读全文