Spring 注解 @Scheduled(cron = "0 0/10 * * * ? ") 任务调度动态改变时间
Posted 如若
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring 注解 @Scheduled(cron = "0 0/10 * * * ? ") 任务调度动态改变时间相关的知识,希望对你有一定的参考价值。
不需要重启应用就可以动态的改变Cron表达式的值
import java.util.Date; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Lazy; import org.springframework.scheduling.Trigger; import org.springframework.scheduling.TriggerContext; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.SchedulingConfigurer; import org.springframework.scheduling.config.ScheduledTaskRegistrar; import org.springframework.scheduling.support.CronTrigger; import org.springframework.stereotype.Component; @Lazy(false) @Component @EnableScheduling public class DynamicScheduledTask implements SchedulingConfigurer { /** * 通过自动注入启动任务调度 * * @Autowired * DynamicScheduledTask dynamicScheduledTask; * */ private final Logger logger = LoggerFactory.getLogger(this.getClass()); private static final String DEFAULT_CRON = "0 0/10 * * * ? "; private String cron = DEFAULT_CRON; /** * 获取任务执行规则 * @return */ public String getCron() { return cron; } /** * 设置任务执行规则 * @param cron */ public void setCron(String cron) { this.cron = cron; } @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.addTriggerTask(new Runnable() { @Override public void run() { // 任务逻辑 logger.debug("dynamicCronTask is running..."); } }, new Trigger() { @Override public Date nextExecutionTime(TriggerContext triggerContext) { // 任务触发,可修改任务的执行周期 CronTrigger trigger = new CronTrigger(cron); Date nextExec = trigger.nextExecutionTime(triggerContext); return nextExec; } }); } }
以上是关于Spring 注解 @Scheduled(cron = "0 0/10 * * * ? ") 任务调度动态改变时间的主要内容,如果未能解决你的问题,请参考以下文章
Spring 注解 @Scheduled(cron = "0 0/10 * * * ? ") 动态改变时间
Spring 注解 @Scheduled(cron = "0 0/10 * * * ? ") 任务调度动态改变时间
spring boot @Scheduled未生效原因以及相关坑