动态修改springboot中的scheduling(动态修改定时任务执行时间)
package org.springblade.timing; import java.util.Date; import javax.servlet.http.HttpServletRequest; 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; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Lazy(value=false) @Component @EnableScheduling @Controller public class DynamicCronTask implements SchedulingConfigurer { public static String cron = "0/10 * * * * ?"; @RequestMapping("/setDynamicCronTask") public String setSpringDynamicCronTask(HttpServletRequest request, String setCron) { System.out.println("cron setDynamicCronTaskto:" + setCron); cron = setCron; System.err.println("cron change to:" + cron); return ""; } @Override public void configureTasks(ScheduledTaskRegistrar taskRegister) { taskRegister.addTriggerTask(new Runnable() { @Override public void run() { // 逻辑任务 System.out.println("dynamicCronTask is running..."+taskRegister.getCronTaskList().size()); } }, new Trigger() { @Override public Date nextExecutionTime(TriggerContext triggerContext) { // 任务触发,可修改任务的执行周期 CronTrigger trigger = new CronTrigger(cron); System.out.println("cron:" + cron); Date nextExecutor = trigger.nextExecutionTime(triggerContext); return nextExecutor; } }); } } 模拟请求:
http://localhost:9998/setDynamicCronTask?setCron=0/1 * * * * ?
运行结果:

推荐文章
- 【ASP.NET Core】自己编程来生成自签名的服务器证书
- @RequestBody接受参数报415错误
- SDDC的Windows初体验-QT篇
- 【kafka】一次磁盘故障后消费者无法消费
- Spark Streaming实时流处理项目实战(四)分布式消息队列Kafka
- vue实现暗黑模式
- 搭建vue2.x开发环境的步骤与方式
- IndexError: tensors used as indices must be long, byte or bool tensors
- uniapp自定义弹窗组件
- 在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational)的方法,注解失效的原因和解决方法