我试图让我的代码在一个固定的时间表上执行,基于Spring cron表达式。我希望代码在每天凌晨1:01执行。我尝试了下面的表达,但这并没有引起我的兴趣。这里的语法有什么问题?

@Scheduled(cron = "0 1 1 ? * *")
public void resetCache() {
    // ...
}

当前回答

您可以使用@Scheduled(cron ="0 1 1 * * ?")注释您的方法。

0 -表示秒

1- 1分钟

每天1小时。

其他回答

您可以使用@Scheduled(cron ="0 1 1 * * ?")注释您的方法。

0 -表示秒

1- 1分钟

每天1小时。

我注意到的一件事是:spring CronTrigger不是cron。你可能在一个有效的cron表达式中有7个参数(你可以在cronmaker.com上验证),然后spring不接受它。大多数情况下,您只需删除最后一个参数,一切正常。

春克朗表情为每天凌晨1:01

@Scheduled(cron =“011”)* * * *)

欲了解更多信息,请查看以下信息:

https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm

对于我的调度程序,我每天早上6点使用它,我的cron符号是:

0 0 6 * * *

如果你想要1:01:am,那么设置为

0 1 1 * * *

调度程序的完整代码

@Scheduled(cron="0 1 1 * * *")
public void doScheduledWork() {
    //complete scheduled work
}

非常重要

为了确保调度程序的发射时间的正确性,你必须像这样设置zone值(我在伊斯坦布尔):

@Scheduled(cron="0 1 1 * * *", zone="Europe/Istanbul")
public void doScheduledWork() {
    //complete scheduled work
}

您可以从这里找到完整的时区值。

注意:我的Spring框架版本是:4.0.7.RELEASE

吉皮纳尼的回答中缺少了一些东西

@Scheduled(cron = "0 1 1,13 * * ?", zone = "CST")

这将在1.01和13.01执行。当您需要在没有模式的情况下每天多次运行作业时,可以使用它。

zone属性在远程服务器上部署时非常有用。这是在spring 4中引入的。