1.首先在 main 中开启定时任务的注解 @EnableScheduling,主要作用是
发现注解@Scheduled的任务并后台执行
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling //开启定时任务
public class TranspondApplication {
public static void main(String[] args) {
SpringApplication.run(TranspondApplication.class, args);
}
}
2.创建定时任务
@Component
public class TestScheduling {
//定义一个按一定频率执行的定时任务,每隔3分钟执行一次,延迟1秒执行
@Scheduled(fixedRate = 3*60*1000,initialDelay = 1000)
public void getACDMService() {
System.out.println("定时任务执行!");
}
}
类注解@Component 是必须的,不然 @Scheduled 是无法被发现的。
该定时任务中fixedRate是一个专门用于添加固定频率任务的关键字,当然用cron也可以实现,在此贴几个cron的用法:
cron中值的顺序为
second(秒), minute(分), hour(时), day of month(日), month(月), day of week(周几)
CRON表达式 含义
"0 0/3 * * * ?" 每三分钟执行一次
"0 0 12 * * ?" 每天中午十二点触发
"0 15 10 ? * *" 每天早上10:15触发
"0 15 10 * * ?" 每天早上10:15触发
"0 15 10 * * ? *" 每天早上10:15触发
"0 15 10 * * ? 2005" 2005年的每天早上10:15触发
"0 * 14 * * ?" 每天从下午2点开始到2点59分每分钟一次触发
"0 0/5 14 * * ?" 每天从下午2点开始到2:55分结束每5分钟一次触发
"0 0/5 14,18 * * ?" 每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发
"0 0-5 14 * * ?" 每天14:00至14:05每分钟一次触发
"0 10,44 14 ? 3 WED" 三月的每周三的14:10和14:44触发
"0 15 10 ? * MON-FRI" 每个周一、周二、周三、周四、周五的10:15触发
附: