springboot集成任务调度
时间: 2023-09-16 21:08:01 浏览: 120
Spring实现任务调度
5星 · 资源好评率100%
Spring Boot提供了与任务调度相关的集成,可以使用Quartz或者Spring自带的任务调度功能。下面是两种集成方式的简要介绍:
1. Quartz集成:
- 引入Quartz的依赖:在pom.xml文件中添加以下依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
```
- 创建一个继承自`QuartzJobBean`的任务类,实现具体的任务逻辑。
- 创建一个继承自`SchedulerFactoryBean`的配置类,配置任务调度器。
```java
@Configuration
public class QuartzConfig {
@Autowired
private List<JobFactory> jobFactories;
@Bean
public SchedulerFactoryBean schedulerFactoryBean() {
SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
schedulerFactoryBean.setJobFactory(new AutowiringSpringBeanJobFactory());
schedulerFactoryBean.setTriggers(trigger1(), trigger2()); // 配置触发器
return schedulerFactoryBean;
}
@Bean
public JobDetailFactoryBean jobDetail1() {
JobDetailFactoryBean jobDetailFactoryBean = new JobDetailFactoryBean();
jobDetailFactoryBean.setJobClass(MyJob.class); // 设置任务类
// ...其他配置
return jobDetailFactoryBean;
}
@Bean
public CronTriggerFactoryBean trigger1() {
CronTriggerFactoryBean triggerFactory = new CronTriggerFactoryBean();
triggerFactory.setJobDetail(jobDetail1().getObject()); // 设置任务详情
// ...其他配置
return triggerFactory;
}
// ...其他任务和触发器的配置
}
```
- 在任务类上使用`@Component`注解,将任务类交给Spring管理。
2. Spring自带任务调度集成:
- 在你的Spring Boot项目中,创建一个继承自`SchedulingConfigurer`的配置类。
- 重写`configureTasks`方法,为任务调度器添加任务并设置触发器。
```java
@Configuration
@EnableScheduling
public class TaskConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setScheduler(taskExecutor()); // 配置任务执行器
taskRegistrar.addTriggerTask(
() -> yourTaskMethod(), // 设置任务方法
triggerContext -> {
CronTrigger trigger = new CronTrigger("0 0/5 * * * ?"); // 设置触发器
return trigger.nextExecutionTime(triggerContext);
}
);
}
@Bean(destroyMethod="shutdown")
public Executor taskExecutor() {
return Executors.newScheduledThreadPool(10); // 配置任务执行器的线程池大小
}
// ...其他配置
}
```
- 在任务方法上使用`@Scheduled`注解,设置任务执行的时间表达式。
以上是两种常见的Spring Boot集成任务调度的方式,你可以根据具体需求选择适合的方式。
阅读全文