动态修改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 * * * * ? 

运行结果: