如何在 Spring 中使用带@Scheduled 注解的 Cron 表达式?
How to use Cron expression with @Scheduled annotation in Spring?
我是 spring 中调度程序的新手。我阅读了很多关于 @scheduled 、 ScheduledExecutorService 和 TimerTask 的文章。
据我所知,@scheduled 和 ScheduledExecutorService 大部分功能相同,但如果您的代码在 spring 中,那么最好在您的代码中使用 @Scheduled 注释。
所以我的问题是假设我想在我的程序启动 15 分钟后 运行 一些任务,这意味着初始延迟是 15 分钟并且该任务应该是 运行 每 5 分钟后意味着 fixedRate 是5 分钟。那么通过使用 cron 表达式我该如何实现呢?
阅读以下链接:
- https://dzone.com/articles/schedulers-in-java-and-spring
- https://crontab.guru/#15____
- https://www.baeldung.com/spring-scheduled-tasks
我可以使用以下代码实现相同的目的,但我想用 cron 表达式编写此代码。
代码:
@Configuration
@EnableScheduling
public class ScheduledConfiguration {
@Scheduled(fixedDelay = 5000, initialDelay = 1000)
public void scheduleFixedRateWithInitialDelayTask() {
long now = System.currentTimeMillis() / 1000;
System.out.println("Fixed rate task with one second initial delay - " + now);
}
}
您不能混合使用初始延迟和 cron。当延迟和速率不足并且您需要更大的灵活性时,可以使用 cron。
但是您可以像这样每 15 分钟使用 cron 安排一次:
@Scheduled(cron = "* /15 * * * *)
Cron 是一种将任务与日历对齐的语法。例如每个星期天下午 3 点。
它不能定义诸如“我的应用程序启动后 15 分钟”之类的事件,因为应用程序启动时间是未知的,并且可以是任何时间。它需要与时钟对齐。例如。整点15 分钟。
同样,它不支持初始延迟与间隔不同的任务。
如果您想使用 cron,它可以 ,但您必须接受第一次调用可能需要约 1 秒到约 14 分 59 秒的任何时间,具体取决于您的应用程序启动的时间。
我是 spring 中调度程序的新手。我阅读了很多关于 @scheduled 、 ScheduledExecutorService 和 TimerTask 的文章。
据我所知,@scheduled 和 ScheduledExecutorService 大部分功能相同,但如果您的代码在 spring 中,那么最好在您的代码中使用 @Scheduled 注释。
所以我的问题是假设我想在我的程序启动 15 分钟后 运行 一些任务,这意味着初始延迟是 15 分钟并且该任务应该是 运行 每 5 分钟后意味着 fixedRate 是5 分钟。那么通过使用 cron 表达式我该如何实现呢?
阅读以下链接:
- https://dzone.com/articles/schedulers-in-java-and-spring
- https://crontab.guru/#15____
- https://www.baeldung.com/spring-scheduled-tasks
我可以使用以下代码实现相同的目的,但我想用 cron 表达式编写此代码。
代码:
@Configuration
@EnableScheduling
public class ScheduledConfiguration {
@Scheduled(fixedDelay = 5000, initialDelay = 1000)
public void scheduleFixedRateWithInitialDelayTask() {
long now = System.currentTimeMillis() / 1000;
System.out.println("Fixed rate task with one second initial delay - " + now);
}
}
您不能混合使用初始延迟和 cron。当延迟和速率不足并且您需要更大的灵活性时,可以使用 cron。
但是您可以像这样每 15 分钟使用 cron 安排一次:
@Scheduled(cron = "* /15 * * * *)
Cron 是一种将任务与日历对齐的语法。例如每个星期天下午 3 点。
它不能定义诸如“我的应用程序启动后 15 分钟”之类的事件,因为应用程序启动时间是未知的,并且可以是任何时间。它需要与时钟对齐。例如。整点15 分钟。
同样,它不支持初始延迟与间隔不同的任务。
如果您想使用 cron,它可以