Spring Task

Spring Framework 提供了一种任务调度的机制,称为 Spring Task。Spring Task 可以帮助您在应用程序中执行定时任务或者周期性任务。在 Spring 中,您可以通过使用 @Scheduled 注解或者实现 SchedulingConfigurer 接口来配置和执行任务。

以下是使用 @Scheduled 注解的示例:

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class MyTask {

    @Scheduled(fixedRate = 5000) // 每隔5秒执行一次
    public void myTaskMethod() {
        System.out.println("Executing my task...");
    }
}

在上面的示例中,MyTask 类被标记为 @Component,表示它是一个 Spring 组件,Spring 会自动扫描并加载该组件。myTaskMethod() 方法被 @Scheduled 注解标记,指示它将以固定的频率执行。您可以使用 fixedRatefixedDelay 或者 cron 属性来配置任务的执行方式。

另一种配置任务的方式是实现 SchedulingConfigurer 接口:

import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;

@Configuration
@EnableScheduling
public class AppConfig implements SchedulingConfigurer {

    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        taskRegistrar.addFixedRateTask(() -> {
            // 定时任务逻辑
            System.out.println("Executing scheduled task...");
        }, 5000); // 每隔5秒执行一次
    }
}

在上面的示例中,AppConfig 类被标记为 @Configuration,表示它是一个 Spring 配置类。通过实现 SchedulingConfigurer 接口,并重写 configureTasks() 方法,您可以以编程方式配置任务。在 configureTasks() 方法中,使用 addFixedRateTask() 方法添加一个固定频率的任务。

这两种方式都能让您在 Spring 应用程序中方便地配置和执行定时任务。您可以根据项目的需要选择其中之一来实现任务调度。

Cron 表达式是一种用来配置任务执行时间的时间表达式。它可以指定在特定的日期、时间或者周期性的时间间隔内执行任务。Cron 表达式由多个字段组成,每个字段代表一个时间单位(如秒、分、小时等),并通过空格分隔。

一个标准的 Cron 表达式包含六个字段:

┌───────────── 秒(0 - 59)
│ ┌───────────── 分钟(0 - 59)
│ │ ┌───────────── 小时(0 - 23)
│ │ │ ┌───────────── 日(1 - 31)
│ │ │ │ ┌───────────── 月份(1 - 12 或者 JAN - DEC)
│ │ │ │ │ ┌───────────── 星期(0 - 7 或者 SUN - SAT,其中 0 和 7 都表示周日)
│ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │
* * * * * *

下面是一些常见的 Cron 表达式示例:

  • 0 0 * * * *: 每小时的整点时刻执行一次任务。
  • 0 0 8 * * *: 每天早上 8 点执行任务。
  • 0 0 12 * * MON-FRI: 每个工作日的中午 12 点执行任务。
  • 0 0 12 1 * *: 每个月的第一天中午 12 点执行任务。
  • 0 0 8-18 * * *: 每天上午 8 点到下午 6 点之间每小时执行一次任务。
  • 0 0/15 * * * *: 每隔 15 分钟执行一次任务。
  • 0 0 0 1 1 *: 每年的 1 月 1 日午夜执行任务。

在编写 Cron 表达式时,请注意以下几点:

  • 每个字段的取值范围是固定的,如秒(0 - 59)、分钟(0 - 59)、小时(0 - 23)、日(1 - 31)、月份(1 - 12 或者 JAN - DEC)以及星期(0 - 7 或者 SUN - SAT,其中 0 和 7 都表示周日)。
  • 可以使用逗号分隔多个取值,表示在这些值中的任意时间点执行任务。
  • 可以使用连字符表示范围,表示在这个范围内的时间点执行任务。
  • 可以使用星号 * 表示匹配任意值。
  • 可以使用斜杠 / 表示间隔值,如 */15 表示每隔 15 个时间单位执行一次任务。

使用 Cron 表达式可以非常灵活地配置任务的执行时间,使得任务可以按照所需的精确时间点或者周期性间隔执行。

cron.qqe2.com 在线生成器

你可能感兴趣的:(spring,java,mybatis)