赞
踩
1.在启动类配置注解 @EnableScheduling
2.建ScheduleConfig
- import org.springframework.context.annotation.Bean;
- import org.springframework.scheduling.TaskScheduler;
- import org.springframework.scheduling.annotation.SchedulingConfigurer;
- import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
- import org.springframework.scheduling.config.ScheduledTaskRegistrar;
-
- 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;
- }
- }

3.具体逻辑
- /**
- * 定时任务
- *
- * @author yanyf
- * 2019/9/20
- */
- @Component
- public class TimerTask implements CommandLineRunner {
-
- private Logger logger = LogManager.getLogger(this.getClass());
-
-
-
-
- /**
- * 1.启动时执行
- */
- @Override
- public void run(String... args) throws Exception {
- logger.info("========定时任务已开启========");
-
- }
- /**
- * 2.之后按要求执行
- *
- * 一些cron表达式:
- * 0 0/15 * * * ?每隔15分钟 0 0/7 * * * ?
- * 0 0 0/1 * * ? 每隔1小时
- * 0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发
- * 0 0 10 L * ? 每个月最后一天的10点0分0秒触发任务
- * 0 0 1 * * ? 每天凌晨1点
- *
- */
- /**
- * 例如 整点查询 是否有 需要发送的短信
- */
- @Scheduled(cron = "0 0 0/1 * * ?")
- public void sendMessage() {
- // 具体逻辑
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。