企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
通过注解 @Scheduled 指定的时间一开始就固定的,不能修改。想要修改定时任务执行的时间,可以如下编写代码。 <br/> **1. 实现接口 SchedulingConfigurer 创建定时任务** ```java @Slf4j @Component public class StudentTaskConfig implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.addTriggerTask(new Runnable() { @Override public void run() { //业务代码放在这里 log.info("业务代码!"); } }, new Trigger() { @Override public Date nextExecutionTime(TriggerContext triggerContext) { //有两个主要的触发器: //1. CronTrigger触发器:根据cron表达式来表达时间。 //2. PeriodicTrigger触发器:可随意设置循环间隔时间,单位为毫秒。 //GlobalCron.cronMap.get("cron")是我定义的一个static Map变量 CronTrigger cronTrigger = new CronTrigger(GlobalCron.cronMap.get("cron")); Date nextExecutionTime = cronTrigger.nextExecutionTime(triggerContext); return nextExecutionTime; } }); } } ``` **2. 初始化cron表达式** ```java @EnableScheduling @SpringBootApplication public class Springboot04TaskApplication { public static void main(String[] args) { //初始化cron表达式 GlobalCron.cronMap.put("cron", "0/4 * * * * MON-SAT"); SpringApplication.run(Springboot04TaskApplication.class, args); } } ``` **3. 修改cron表达式** ```java @GetMapping("update") public String update(@RequestParam("cron") String cron) { GlobalCron.cronMap.put("cron", cron); return "Update Ok!"; } ```