有时候我们在做项目时,会遇到使用定时任务来定时执行一些操作,如:文件迁移,备份等等。
今天就来跟大家一起学习下如何在SpringBoot中创建定时任务。
1.首先我们需要修改Spring Boot启动文件,加入注解@EnableScheduling来开启定是机制。代码如下:
@SpringBootApplication
@EnableScheduling
public class ProjectServerApplication {
public static void main(String[] args) {
SpringApplication.run(ProjectServerApplication.class, args);
}
}
2.然后我们需要写一个定时服务来执行。下面常规操作我们首先创建任务接口,示例代码如下:
public interface ITaskService {
/**
* 定时服务要执行的服务层方法
*/
public void testTask();
}
3.创建开发类,实现定时机制。示例代码如下:
@Service
public class ITaskServiceImpl implements ITaskService {
/**
* 清除上传的临时文件定时服务
* 设置每天3点执行一次任务 @Scheduled(cron = "0 0 3 * *?")
* 此处为了测试设置为每分钟执行一次
*/
@Override
@Scheduled(fixedRate = 1000*60)
public void testTask() {
logger.info("定时任务开始执行。。。。。");
/*
此处放置要执行的任务代码
*/
logger.info("定时任务执行结束。。。。。");
}
}
4.启动后即可测试效果,请自行测试。
备注:
本示例中使用的是 fixedRate函数,它指定的是从调用开始时间到指定时间之后,单位毫秒。
fixedDelay指定从完成任务测量的时间间隔。
指定具体时间,使用 Scheduled(cron="... ")
cron参数说明: 0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
0 0 12 ? * WED 表示每个星期三中午12点
"0 0 12 * * ?" 每天中午12点触发
其中 按顺序依次为:
秒(0~59)、分钟(0~59)、小时(0~23)、天(0~31,天数不一致)、月(0~11)
天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
7.年份(1970-2099)