動態設置quartz定時任務的cron時間有:xml方式與數據庫表方式,並且這兩種方式在已有的定時任務上需增長大量的代碼及數據表,因此在網上找了一種比較簡單並且較爲實用的方法,但這樣的方式不夠智能,每次修改定時任務時間後,都須要從新啓動服務。若想自由控制項目中的定時任務執行可參考xx-job任務調度項目spring
動態設置quartz定時任務的cron時間是引用SchedulingConfigurer接口,並須要在實現類中增長註解@EnableScheduling。注:@EnableScheduling對Spring的版本要求比較高,spring版本須要使用4.2.5以上版本,如果低版本則沒法生效。數據庫
1.先在配置文件中設置定時任務執行時間ide
#執行時間格式設置 conTestTime:0/20 * * * * ?
2.編寫任務執行類日誌
@Component @EnableScheduling public class QuertzJobTask implements SchedulingConfigurer { private static final Logger log = LoggerFactory.getLogger(QuertzJobTask.class); //讀取配置文件中設置時間 @Value("${conTestTime}") String indSchedulerJobTime; @Override public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { scheduledTaskRegistrar.addTriggerTask(new Runnable() { @Override public void run() { // 執行任務邏輯 log.info("執行時間 :"+indSchedulerJobTime); } }, new Trigger() { @Override public Date nextExecutionTime(TriggerContext triggerContext) { // 任務觸發,可修改任務的執行週期 CronTrigger trigger = new CronTrigger(indSchedulerJobTime); Date nextExec = trigger.nextExecutionTime(triggerContext); return nextExec; } }); } }
任務啓動後,能夠在控制檯上查看到其執行的任務打印出的日誌信息xml