~~~
@Slf4j
@Configuration //1.主要用于標記配置類,兼備Component的效果。
@EnableScheduling // 2.開啟定時任務
public class DynamicScheduleTask implements SchedulingConfigurer {
/**
* 執行定時任務.
*/
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.addTriggerTask(
//1.添加任務內容(Runnable)
() -> {
// 執行的任務
log.info("執行動態定時任務" + LocalDateTime.now().toLocalTime());
},
//2.設置執行周期(Trigger)
triggerContext -> {
// 從數據庫或者其他數據源獲取執行周期
String cron = "0/5 * * * * ?";
// 合法性校驗.
if (StringUtils.isEmpty(cron)) {
// Omitted Code ..
}
//2.3 返回執行周期(Date)
return new CronTrigger(cron).nextExecutionTime(triggerContext);
});
}
}
~~~
注意:?如果在數據庫修改時格式出現錯誤,則定時任務會停止,即使重新修改正確;此時只能重新啟動項目才能恢復。