spring-boot通过@Scheduled配置定时任务

串行的定时任务

@Component
public class ScheduledTimer {

private Logger logger = Logger.getLogger(this.getClass());

/**
* 定时任务,1分钟执行1次,更新潜在客户超时客户共享状态
*/
@Scheduled(cron="0 0/1 8-20 * * ?")
public void executeUpdateCuTask() {
Thread current = Thread.currentThread();
logger.info(" 定时任务1:"+current.getId()+ ",name:"+current.getName());
}

@Scheduled(cron="0 0/1 8-20 * * ?")
public void executeGetRepayTask() {
Thread current = Thread.currentThread();
logger.info(" 定时任务2:"+current.getId()+ ",name:"+current.getName());
}


}

并行的定时任务需要添加配置文件

因为spring-boot的目的就是干掉配置文件,我在网上看到的很多都是通过配置文件来实现的,这里通过代码配置实现:

@Configuration
public class ScheduleConfig implements SchedulingConfigurer{

@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar){
TaskScheduler taskScheduler = taskScheduler();
taskRegistrar.setTaskScheduler(taskScheduler);
}

@Bean(destroyMethod = "shutdown")
public ThreadPoolTaskScheduler taskScheduler() {
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.setPoolSize(20);
scheduler.setThreadNamePrefix("task-");
scheduler.setAwaitTerminationSeconds(60);
scheduler.setWaitForTasksToCompleteOnShutdown(true);
return scheduler;
}
}


网上教程说的需要在启动类上加上@EnableScheduling注解来发现注解@Scheduled的任务并后台执行。
可能我没有通过启动类是通过外部tomcat启动的项目,所以没有加这个注解也能实现定时任务。
路过的大侠如果有知道的,多多指教@EnableScheduling注解的作用,谢谢。


posted @ 2017-11-17 10:23  yizw  阅读(2302)  评论(0编辑  收藏  举报