Spring定时任务(Scheduling Tasks)
程序员文章站
2022-05-01 14:25:43
...
1. 开启定时任务(Enable Scheduling)
使用@EnableScheduling注解开启定时任务。
package com.example.schedulingtasks;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
public class SchedulingTasksApplication {
public static void main(String[] args) {
SpringApplication.run(SchedulingTasksApplication.class);
}
}
2. 创建定时任务(Create a Scheduled Task)
创建一个定时任务的组件(加@Component的类),并使用@Scheduled注解标注定时任务的方法。
package com.example.schedulingtasks;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ScheduledTasks {
private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class);
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
@Scheduled(fixedRate = 5000)
public void reportCurrentTime() {
log.info("The time is now {}", dateFormat.format(new Date()));
}
}
此示例中使用了 fixedRate,还有别的选项,如 fixedDelay 和 @Scheduled(cron="…") 等。
此时,我们就轻松使用几个注解完成了Spring的定时任务创建。
总结
- 在SpringBoot主程序入口中加入@EnableScheduling开启定时任务
- 创建一个带有@Component的类,并使用@Scheduled注解标注定时任务的void方法
- 在@Scheduled中可设置cron表达式等来设置时间规则