一文详解SpringBoot 定时任务(cron表达式)
在Spring Boot中,我们可以使用@Scheduled
注解和cron表达式来创建定时任务。
Cron表达式是一个字符串,包含6个或7个字段,用空格分隔,表示特定的时间计划。字段必须满足特定的条件,如下所示:
Seconds (0~59)
Minutes (0~59)
Hours (0~23)
Day of month (1~31)
Month (1~12 or JAN~DEC)
Day of week (1~7 or SUN~SAT)
Year (1970~2099)
这里是一个使用@Scheduled
注解和cron表达式的例子:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.format.DateTimeFormatter;
import java.time.LocalDateTime;
@Component
public class ScheduledTasks {
private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
// 每5秒执行一次
@Scheduled(fixedRate = 5000)
public void reportCurrentTime() {
System.out.println("现在时间是:" + dateTimeFormatter.format(LocalDateTime.now()));
}
// 在每天的下午10:15执行
@Scheduled(cron = "0 15 10 * * ?")
public void performTaskUsingCron() {
System.out.println("使用Cron表达式执行定时任务:" + dateTimeFormatter.format(LocalDateTime.now()));
}
}
在这个例子中,我们定义了两个方法,reportCurrentTime
使用fixedRate
属性,每5秒执行一次。另一个方法performTaskUsingCron
使用cron表达式,在每天下午10:15执行。
要启用定时任务,你需要在Spring Boot应用的主类或配置类上添加@EnableScheduling
注解:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
public class ScheduledTasksApplication {
public static void main(String[] args) {
SpringApplication.run(ScheduledTasksApplication.class);
}
}
@EnableScheduling
注解会启用Spring的调度器,发现注解了@Scheduled
的方法,并按照指定的计划执行它们。
评论已关闭