import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; 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.stereotype.Component; import org.springframework.util.StopWatch; import java.time.LocalDateTime; @Component @EnableScheduling @Configuration public class TestScheduled implements SchedulingConfigurer { @Autowired private MapperDao mapperDao; @Override public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { scheduledTaskRegistrar.addTriggerTask( //1.添加任务内容 this::scheduleTask, //2.设置执行周期 triggerContext -> { //2.1 从数据库获取执行周期 CronInfo cronInfo= mapperDao.findById(20); String cron = cronInfo.getCron(); //2.2 合法性校验. if (StringUtils.isEmpty(cron)) { System.out.println("null"); } //2.3 返回执行周期(Date) return new CronTrigger(cron).nextExecutionTime(triggerContext); } ); } public void scheduleTask() { StopWatch stopWatch = new StopWatch(); stopWatch.start(); System.out.println("开始执行业务:" + LocalDateTime.now()); for (int i = 0; i < 10; i++) { System.out.println("==>" + i); } stopWatch.stop(); System.out.println(stopWatch.getTotalTimeSeconds()); } }