1.创建定时任务类
package com.example.demo;
import cn.hutool.core.date.DateUtil;
import com.example.demo.service.CronService;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
@Component
public class Cron implements SchedulingConfigurer {
private String cron1;
public void setCron1(String cro) {
this.cron1 = cro;
}
private String cron2;
public void setCron2(String cro) {
this.cron2 = cro;
}
@Resource
CronService cronService;
@PostConstruct
public void doConstruct() {
this.cron1 = "0/10 * * * * ?";
this.cron2 = cronService.getCron();
}
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.addTriggerTask(() -> System.out.println("Current time: " + DateUtil.now()), triggerContext -> {
CronTrigger cronTrigger = new CronTrigger(cron1);
System.out.println("执行操作");
return cronTrigger.nextExecutionTime(triggerContext);
});
taskRegistrar.addTriggerTask(() -> System.out.println("Current time: " + DateUtil.now()), triggerContext -> {
CronTrigger cronTrigger = new CronTrigger(cron2);
System.out.println("执行操作2");
return cronTrigger.nextExecutionTime(triggerContext);
});
}
}
2.通过接口调整定时任务执行时间间隔
package com.example.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/test")
@RestController
public class TestController {
private final Cron cron;
@Autowired
public TestController(Cron cron) {
this.cron = cron;
}
@RequestMapping("/set")
public String set(String cro) {
cron.setCron1(cro);
return "ok";
}
}