我们在项目开发中可能会遇到这样的场景,比如:我需要定时地发送一些短信、邮件之类的操作,也可能会定时地检查和监控一些标志、参数等。
在 Spring Boot 的主类中加入@EnableScheduling
注解,启动定时任务的配置
@SpringBootApplication
@EnableScheduling
public class RedisApplication {
public static void main(String[] args) {
SpringApplication.run(RedisApplication.class, args);
}
}
然后编写定时任务的实现类
@Component
public class ScheduledTasks {
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
@Scheduled(fixedRate = 10000)
public void reportCurrentTime() {
System.out.println("现在时间:" + dateFormat.format(new Date()));
}
}
程序启动后(每隔10秒输出一次)
@Scheduled(fixedRate = 10000)
注解来定义每过10秒执行的任务,对于@Scheduled的使用可以有如下几种方式:
@Scheduled(fixedRate = 10000)
:上一次开始执行时间点之后10秒再执行
@Scheduled(fixedDelay = 10000)
:上一次执行完毕时间点之后5秒再执行
@Scheduled(initialDelay=1000, fixedRate=10000)
:第一次延迟1秒后执行,之后按fixedRate的规则每10秒执行一次
@Scheduled(cron="*/10 * * * * *")
:通过cron表达式定义规则