SpringBoot使用注解方式开启定时任务
启动类里面@EnableScheduling开启定时任务,自动扫码
定时任务业务类加注解@Component被容器扫码
定时执行的方法加注解@Scheduled(fixedRate=2000)定期执行一次
cron 定时任务表达式 @Scheduled(cron="*/1 * * * * *")表示每秒
crontab 工具 https://tool.lu/crontab/
fixedRate:定时多久执行一次(上一次开始执行时间点后xx秒再次执行)
fixedDelay:上一次执行结束时间点后xx秒在次执行
示例:
package net.xdclass.demoproject.schedule;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Random;
/**
* 定时统计订单,金额
*/
@Component
class VideoOrderTask {
//每2秒执行一次
@Scheduled(fixedDelay = 4000)
//@Scheduled(fixedRate = 4000)
//@Scheduled(cron = "*/1 * * * * *")
public void sum(){
//正常的是从数据库中查询
System.out.println(LocalDateTime.now() + " 当前交易额="+ Math.random());
try {
Thread.sleep(2000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}