springboot Scheduled 每小时 隔两分钟执行一次

发布于:2024-11-28 ⋅ 阅读:(14) ⋅ 点赞:(0)

在 Spring Boot 应用中,可以使用 @Scheduled 注解来创建一个定期任务,使其每两分钟执行一次。以下是如何设置这个任务的步骤:

  1. 确保已经在项目中添加了 Spring Boot Starter 依赖:
    通常,这会在 pom.xml(如果使用 Maven)或 build.gradle(如果使用 Gradle)文件中配置。
    Maven 示例:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- 确保包含 spring-boot-starter-web 以获得 @RestController 等注解 -->

Gradle 示例:

implementation 'org.springframework.boot:spring-boot-starter'
implementation 'org.springframework.boot:spring-boot-starter-web'
  1. 启用调度功能:
    在主应用类(通常是带有 @SpringBootApplication 注解的类)上添加 @EnableScheduling 注解。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
 
@SpringBootApplication
@EnableScheduling
public class MySpringBootApplication {
    public static void main(String[] args) {
        SpringApplication.run(MySpringBootApplication.class, args);
    }
}
  1. 创建调度任务:
    创建一个新的 Java 类,并在该类中定义一个带有 @Scheduled 注解的方法。可以使用 fixedRate 或 fixedDelay 属性来设置执行频率,或者使用 cron 表达式来定义更复杂的调度。
    对于每两分钟执行一次的任务,可以使用以下 cron 表达式:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
 
@Component
public class MyScheduledTasks {
 
    @Scheduled(cron = "0 0/2 * * * ?")
    public void executeTask() {
        // 在这里编写任务逻辑
        System.out.println("Task executed at: " + System.currentTimeMillis());
    }
}

在这个例子中,cron 表达式 0 0/2 * * * ? 的含义是:

  • 0 秒
  • 每 2 分钟(0/2)
  • 每一天中的每一小时(*)
  • 每月的每一天(*)
  • 每个月(*)
  • 不指定星期几(?,因为在 cron 表达式中,日期和星期几通常是互斥的)
  1. 运行应用:
    现在,当运行 Spring Boot 应用时,executeTask 方法将每两分钟被调用一次。

请确保 Spring Boot 应用没有因为其他错误而停止运行,否则调度任务也不会执行。此外,如果更改了时区设置,请确保 cron 表达式或应用配置与期望时区相匹配。