最近做了一个小程序用到定时任务,方法很多这个实现起来简单方便,记录一下
1.首先启动类需要加@EnableScheduling注解
/**
* @author fzk
*/
@SpringBootApplication
@EnableScheduling
@MapperScan("com.enn.archivesservicesync.mapper")
public class ArchivesServiceSyncApplication {
public static void main(String[] args) {
SpringApplication.run(ArchivesServiceSyncApplication.class, args);
}
}
然后编写一个定时任务类
/**
* @description:
* @author: fzk
* @time: 2021/11/11
*/
@Component
public class SyncTask {
private static final Logger logger = LoggerFactory.getLogger(SyncTask.class);
@Resource
private ErmsArchService ermsArchService;
/**
* 程序启动延迟1秒执行 之后每一小时执行一次
*/
@Scheduled(initialDelayString = "${initialDelayString}",fixedDelayString = "${fixedDelayString}")
public void sync(){
logger.info("同步任务开始.....执行");
ermsArchService.postSyncData();
logger.info("同步任务执行.....结束");
}
}
2.我的@Scheduled参数配置在application.yml里
#cron.timer=0 0 0/1 * * ?
initialDelayString=1000
fixedDelayString=3600000
@Scheduled参数可以参考:@Scheduled注解各参数详解
如果还满足不了定时任务实现方式地址参考:java定时任务实现的4种方式 SpringBoot三种方式实现定时任务
必要的时候也可以自定义一个线程池,这个可以参考:SpringBoot 定时任务(自定义线程池)