返回
巧妙活用SpringBoot和Quartz,轻松打造定时任务(终章)
后端
2024-02-03 04:29:33
一、Spring集成Quartz配置详解
1. 导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
2. 配置Job和Trigger
2.1 配置Job
@Component
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) {
System.out.println("任务执行了");
}
}
2.2 配置Trigger
@Configuration
public class QuartzConfig {
@Bean
public JobDetail jobDetail() {
return JobBuilder.newJob(MyJob.class)
.withIdentity("myJob")
.storeDurably()
.build();
}
@Bean
public Trigger trigger() {
SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(30) // 每30秒执行一次
.repeatForever();
return TriggerBuilder.newTrigger()
.forJob(jobDetail())
.withIdentity("myTrigger")
.withSchedule(scheduleBuilder)
.build();
}
}
二、Quartz配置和触发实战
1. 配置Quartz
在application.properties
中添加以下配置:
spring.quartz.job-store-type=jdbc
spring.datasource.url=jdbc:mysql://localhost:3306/quartz
spring.datasource.username=root
spring.datasource.password=123456
2. 使用Quartz
2.1 启动/关闭任务
@RestController
public class QuartzController {
@Autowired
private Scheduler scheduler;
@GetMapping("/start")
public String start() {
scheduler.start();
return "任务已启动";
}
@GetMapping("/stop")
public String stop() {
scheduler.shutdown();
return "任务已停止";
}
}
2.2 动态添加/修改/删除任务
@RestController
public class QuartzDynamicController {
@Autowired
private Scheduler scheduler;
@PostMapping("/add")
public String add(@RequestBody JobDetail jobDetail, Trigger trigger) {
scheduler.scheduleJob(jobDetail, trigger);
return "任务已添加";
}
@PutMapping("/modify")
public String modify(@RequestBody JobDetail jobDetail, Trigger trigger) {
scheduler.rescheduleJob(TriggerKey.triggerKey(trigger.getName(), trigger.getGroup()), trigger);
return "任务已修改";
}
@DeleteMapping("/delete")
public String delete(@RequestBody JobKey jobKey) {
scheduler.deleteJob(jobKey);
return "任务已删除";
}
}
至此,我们已经全面了解了SpringBoot结合Quartz开发定时任务的知识。赶快动手实践,让您的项目也能轻松实现定时任务功能吧!