我试图基于Spring cron表达式以固定的时间表执行代码。我希望代码每天1:01:am执行。我尝试了以下表达式,但这并没有激发我。这里的语法有什么问题?
@Scheduled(cron = "0 1 1 ? * *")
public void resetCache() {
// ...
}
我试图基于Spring cron表达式以固定的时间表执行代码。我希望代码每天1:01:am执行。我尝试了以下表达式,但这并没有激发我。这里的语法有什么问题?
@Scheduled(cron = "0 1 1 ? * *")
public void resetCache() {
// ...
}
Answers:
尝试:
@Scheduled(cron = "0 1 1 * * ?")
您可以在下面的spring论坛中找到示例模式:
* "0 0 * * * *" = the top of every hour of every day.
* "*/10 * * * * *" = every ten seconds.
* "0 0 8-10 * * *" = 8, 9 and 10 o'clock of every day.
* "0 0 8,10 * * *" = 8 and 10 o'clock of every day.
* "0 0/30 8-10 * * *" = 8:00, 8:30, 9:00, 9:30 and 10 o'clock every day.
* "0 0 9-17 * * MON-FRI" = on the hour nine-to-five weekdays
* "0 0 0 25 12 ?" = every Christmas Day at midnight
Cron表达式由六个字段表示:
second, minute, hour, day of month, month, day(s) of week
(*)
意味着匹配任何
*/X
表示“每个X”
?
(“无特定值”)-当您需要在允许使用字符的两个字段之一中指定某个内容而在另一个不允许的字段中指定某些内容时很有用。例如,如果我希望触发器在每月的某个特定日期(例如10号)触发,但是我不在乎一周中的哪一天,我会在当天输入“ 10”,月字段和“?” 在星期几字段中。
PS:为了使其正常工作,请记住在您的应用程序上下文中启用它:https : //docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/scheduling.html#scheduling-注释支持
对于我的调度程序,我每天使用它在凌晨6点触发,我的cron表示法是:
0 0 6 * * *
如果要1:01:am,则将其设置为
0 1 1 * * *
调度程序的完整代码
@Scheduled(cron="0 1 1 * * *")
public void doScheduledWork() {
//complete scheduled work
}
** 非常重要
为了确保调度程序的启动时间正确性,您必须像这样设置区域值(我在伊斯坦布尔):
@Scheduled(cron="0 1 1 * * *", zone="Europe/Istanbul")
public void doScheduledWork() {
//complete scheduled work
}
您可以从此处找到完整的时区值。
注意:我的Spring框架版本是:4.0.7.RELEASE
<task:scheduled ref="paypalCronJob" method="runTask" cron="0 0 6 * * * ?"/>
吗?
gipinani的答案中缺少的东西
@Scheduled(cron = "0 1 1,13 * * ?", zone = "CST")
这将在1.01和13.01执行。当您需要每天多次运行无模式的作业时,可以使用它。
在远程服务器中进行部署时,zone属性非常有用。它是在Spring 4引入的。
我注意到的一件事是:Spring CronTrigger不是cron。您可能会在有效的cron表达式(可以在cronmaker.com上进行验证)中以7个参数结尾,然后不接受它。在大多数情况下,您只需删除最后一个参数即可,一切正常。
每天的cron cron表达1:01:am
@Scheduled(cron =“ 0 1 1?* *”)
有关更多信息,请检查以下信息:
https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm