springboot怎么动态配置多个定时任务,请给出样例
时间: 2023-06-04 13:08:07 浏览: 286
springboot整合Quartz实现动态配置定时任务的方法
好的,关于springboot动态配置多个定时任务,可以使用Quartz框架来实现。下面是一个简单的示例:
首先,在pom.xml中加入以下依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
```
然后,在application.properties文件中配置Quartz相关属性:
```
# 开启Quartz
spring.quartz.enabled=true
# 配置Quartz数据源
spring.datasource.url=jdbc:mysql://localhost:3306/quartz
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# Quartz表的前缀
spring.quartz.job-store.table-prefix=QRTZ_
# 配置定时任务的线程池
spring.quartz.thread-pool.thread-count=10
```
接下来,定义定时任务的Job类和JobDetail:
```
@Component
public class TaskJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
// 定时任务执行的逻辑
System.out.println("定时任务执行时间:" + new Date());
}
}
@Configuration
public class QuartzConfig {
/**
* 创建并返回一个 JobDetail 实例
*/
@Bean
public JobDetail myJobDetail() {
return JobBuilder.newJob(TaskJob.class)
.withIdentity("myJob")
.storeDurably()
.build();
}
}
```
最后,定义触发器Trigger并启动Scheduler:
```
@Configuration
public class QuartzConfig {
@Autowired
private JobDetail myJobDetail;
/**
* 创建并返回一个 CronTrigger 实例
*/
@Bean
public Trigger myTrigger() {
return TriggerBuilder.newTrigger()
.forJob(myJobDetail)
.withIdentity("myTrigger")
.withSchedule(CronScheduleBuilder.cronSchedule("0/10 * * * * ?"))
.build();
}
/**
* 创建 Scheduler 并启动,将 JobDetail 和 Trigger 注册进去
*/
@Bean
public Scheduler scheduler() throws SchedulerException {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.scheduleJob(myJobDetail, myTrigger());
scheduler.start();
return scheduler;
}
}
```
以上就是一个简单的动态添加定时任务的例子,你可以根据自己的需求进行调整。
阅读全文