【Java】Spirng Boot中的任务调度

在开发企业级应用程序时,经常需要执行定时任务或周期性任务。这些任务可以包括清理临时文件,备份数据库,发送电子邮件等等。Spring Boot 提供了一个内置的任务调度器,可以方便地执行这些任务。

使用步骤

第一步:添加依赖项

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter</artifactId>
     <version>2.5.2</version>
</dependency>

第2步,创建任务:

1 @Component
2 public class MyTask {
3     @Scheduled(fixedRate = 1000)
4     public void printDateTime() {
5         System.out.println("Current Date and Time: " + LocalDateTime.now());
6     }
7 }

在上面的代码中,@Scheduled 注释指定了该方法应该每秒执行一次。

第3步,启用任务调度器

1 @SpringBootApplication
2 @EnableScheduling
3 public class MyApp {
4     public static void main(String[] args) {
5         SpringApplication.run(MyApp.class, args);
6     }
7 }

第 4 步:运行应用程序

运行应用程序,并观察控制台输出。您应该会在控制台上看到当前日期和时间每秒输出一次。

任务调度配置选项

Spring Boot 的任务调度器提供了许多配置选项,可以用于调整任务调度器的行为。以下是一些常用的配置选项,

fixedRate:指定任务或周期性任务时间间隔(单位毫秒)

initialDelay:指定任务后台启动后多久开始执行

cron:使用 cron 表达式指定任务的执行时间。

多个任务调度

在 Spring Boot 中,可以定义多个任务,每个任务都可以使用 @Scheduled 注释来定期执行。例如,以下代码演示了如何定义两个任务。

 1 @Component
 2 public class MyTasks {
 3     @Scheduled(fixedRate = 5000)
 4     public void task1() {
 5         System.out.println("Task 1 executed at " + LocalDateTime.now());
 6     }
 7 
 8     @Scheduled(fixedRate = 10000)
 9     public void task2() {
10         System.out.println("Task 2 executed at " + LocalDateTime.now());
11     }
12 }

 在上面的代码中,我们定义了两个任务,每个任务都使用 @Scheduled 注释来定期执行。任务 1 每 5 秒钟执行一次,任务 2 每 10 秒钟执行一次。

 

posted @ 2025-02-12 09:20  陆陆无为而治者  阅读(70)  评论(0)    收藏  举报