依赖版本
Spring Boot版本:1.5.18
参考文档
springboot配置
# schedulecron.one=0 30 10 * * ?复制代码
Spring Schedule 配置
import org.slf4j.Logger;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.scheduling.annotation.EnableScheduling;import org.springframework.scheduling.annotation.SchedulingConfigurer;import org.springframework.scheduling.config.CronTask;import org.springframework.scheduling.config.IntervalTask;import org.springframework.scheduling.config.ScheduledTaskRegistrar;import org.springframework.scheduling.support.ScheduledMethodRunnable;import java.util.List;import java.util.concurrent.Executor;import java.util.concurrent.ScheduledThreadPoolExecutor;@Configuration@EnableSchedulingpublic class ScheduleConfigurer implements SchedulingConfigurer { private static final Logger log = org.slf4j.LoggerFactory.getLogger(ScheduleConfigurer.class); @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.setScheduler(taskExecutor()); /** * 启动时打印任务 */ ListcronTasks = taskRegistrar.getCronTaskList(); List fixedDelayTasks = taskRegistrar.getFixedDelayTaskList(); List fixedRateTasks = taskRegistrar.getFixedRateTaskList(); for (CronTask cronTask : cronTasks){ String expression = cronTask.getExpression(); ScheduledMethodRunnable runnable = (ScheduledMethodRunnable) cronTask.getRunnable(); log.info("method: {},expression: {}",runnable.getMethod(),expression); } for (IntervalTask intervalTask : fixedDelayTasks){ ScheduledMethodRunnable runnable = (ScheduledMethodRunnable)intervalTask.getRunnable(); log.info("method: {},InitialDelay: {}",runnable.getMethod(),intervalTask.getInitialDelay()); } for (IntervalTask intervalTask : fixedRateTasks){ long interval = intervalTask.getInterval(); ScheduledMethodRunnable runnable = (ScheduledMethodRunnable)intervalTask.getRunnable(); log.info("method: {},Initial: {}",runnable.getMethod(),intervalTask.getInterval()); } } @Bean(destroyMethod="shutdown") public Executor taskExecutor() { // 线程池 ScheduledThreadPoolExecutor scheduledThreadPoolExecutor = new ScheduledThreadPoolExecutor(5); //scheduledThreadPoolExecutor.setRejectedExecutionHandler(new RejectedExecutionHandler() { // @Override // public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) { // // } //}); return scheduledThreadPoolExecutor; }}复制代码
设置定时任务
import org.slf4j.Logger;import org.springframework.scheduling.annotation.Scheduled;import org.springframework.stereotype.Component;@Componentpublic class ScheduleOne { private static final Logger log = org.slf4j.LoggerFactory.getLogger(ScheduleOne.class); @Scheduled(cron = "${cron.one}") public void test() { log.info("计划任务开始执行"); }}复制代码