当前位置: 首页 > 知识库问答 >
问题:

如何在Spring中使用带有@scheduled注释的Cron表达式?

白高超
2023-03-14

我是Spring调度器的新手。我读了很多关于@ScheduledExecutorService和TimerTask的文章。

因此,据我所知,@ScheduledExecutorService和ScheduledExecutorService的功能大部分是相同的,但如果您的代码是在spring中,那么最好在代码中使用@ScheduledExecutorService。

所以我的问题是,假设我想在15分钟后运行某个任务,我的程序启动,这意味着初始延迟是15分钟,任务应该在5分钟后每运行一次,这意味着fixedRate是5分钟。那么通过使用cron表达式,我如何实现它呢?

阅读以下链接:

  1. https://dzone.com/articles/schedulers-in-java-and-spring
  2. https://crontab.guru/#15____
  3. https://www.baeldung.com/spring-schedule-tasks

代码:

@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);
    }
}

共有1个答案

谭山
2023-03-14

Cron是一种将任务与日历对齐的语法。例如每周日下午3点。

它不能定义像“我的应用程序启动后15分钟”这样的事件,因为应用程序的启动时间是未知的,可以是任何事情。它需要和时钟对齐。例如。一小时过去了15分钟。

同样,它也不支持初始延迟与间隔不同的任务。

 类似资料:
  • 在我们的系统中,我们使用一个设置类来指向属性文件,这取决于它加载不同属性文件的eve。要访问特定属性,我们调用“设置”。getString('property_name_here')。 在我的代码中,我将@scheduled cron表达式加载到一个变量,并尝试将其传递给@scheduled注释,但它不起作用, 下面是我的代码:在属性文件中: 在我看来: 它创建了一个字符串“0114***”,这是

  • null 上个月的第一天和本月的第一天 上月1日和本月第3个工作日 当前星期的星期一日期和当前星期的staturday日期。

  • 我在我的项目中使用spring data jpa和spring mvc。然而,我总是得到错误。 如果我注释jpaconfig.java,我的应用程序运行良好。 我不知道为什么?请你帮帮我: 我的代码: WebAppConfig.java jpaconfig.java 应用程序.属性

  • 问题内容: 我想在ng-repeat块中添加带有插值表达式的HTML注释。但是,当我尝试执行此操作时,不会对表达式进行插值。例如: 当我查看DOM(即Chrom DevTools中的Elements标签)时,我只看到未插补的字符串(“ {{item.id}}”)而不是插补的值。 这里正确的语法是什么? 问题答案: 这是一种矫kill过正的方法,因为您可以只使用或类似注释中的建议,但是这只是一个有趣

  • 我想基于cron表达式运行一个作业,但它应该在rest调用后从DB中查找cron表达式。 一旦rest api被命中,它应该等待cron表达式,我们可以从数据库或任何方法获得它,然后它应该在指定的时间启动。 它的工作方式与普通的方法调用类似。