Spring Boot 创建定时任务
在Spring Boot中创建定时任务,你可以使用@Scheduled
注解。以下是一个简单的例子:
- 首先,在Spring Boot主类或配置类上添加
@EnableScheduling
注解来启用定时任务。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
public class SchedulerApplication {
public static void main(String[] args) {
SpringApplication.run(SchedulerApplication.class, args);
}
}
- 创建一个定时任务的类,并使用
@Scheduled
注解来指定任务的执行计划。
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");
@Scheduled(fixedRate = 5000)
public void reportCurrentTime() {
System.out.println("现在时间是:" + dateTimeFormatter.format(LocalDateTime.now()));
}
}
在这个例子中,reportCurrentTime
方法将会每5秒钟执行一次,并打印当前时间。
@Scheduled
注解支持多种计划类型,如:
@Scheduled(fixedRate = 5000)
:以固定速率执行任务,上一次执行开始后5秒再执行。@Scheduled(fixedDelay = 5000)
:以固定延迟执行任务,上一次执行完成后5秒再执行。@Scheduled(initialDelay = 1000, fixedRate = 5000)
:初始延迟1秒后执行,之后以固定速率执行。- 使用CRON表达式:
@Scheduled(cron = "0 * * * * *")
每分钟的第0秒执行。
确保你的Spring Boot应用配置了一个时间源(如:一个Clock
或ScheduledExecutorService
),否则定时任务可能无法正常工作。
评论已关闭