import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Configuration;
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.scheduling.support.PeriodicTrigger;
import java.time.LocalDateTime;
@Configuration
@EnableScheduling
public class ComScheduleConfig implements SchedulingConfigurer {
/**
* 执行定时任务.
*/
// @Override
// public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
// taskRegistrar.addTriggerTask(
// //1.添加任务内容(Runnable)
// () -> System.out.println("执行定时任务: " + LocalDateTime.now().toLocalTime()),
// //2.设置执行周期(Trigger)
// triggerContext -> {
// //2.1 从数据库获取执行周期
// String cron = "0/5 * * * * ?";
// //2.2 合法性校验.
// if (StringUtils.isEmpty(cron)) {
// // Omitted Code ..
// }
// //2.3 返回执行周期(Date)
// return new CronTrigger(cron).nextExecutionTime(triggerContext);
// }
// );
// }
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.addTriggerTask(
//1.添加任务内容(Runnable)
//() -> System.out.println("执行定时任务3: " + LocalDateTime.now().toLocalTime()),
() -> test(),
//2.设置执行周期(Trigger)
triggerContext -> {
//2.1 从数据库获取执行周期
//String cron = "0/5 * * * * ?";
long period = 2000;
PeriodicTrigger pt = new PeriodicTrigger(period);
pt.setInitialDelay(1000 * 60);
//pt.setFixedRate(true);
//2.2 合法性校验.
// if (StringUtils.isEmpty(period)) {
// // Omitted Code ..
// }
//2.3 返回执行周期(Date)
return pt.nextExecutionTime(triggerContext);
}
);
}
private void test(){
System.out.println("执行定时任务******: " + LocalDateTime.now().toLocalTime());
try {
Thread.sleep(1000*20);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}