spring的cronexpression每天1:01:am
我试图让我的代码在一个固定的时间表上执行,基于Spring cronexpression式。 我希望代码每天都在1:01:am执行。 我尝试了下面的expression,但是这并没有激起我的兴趣。 这里的语法有什么问题?
@Scheduled(cron = "0 1 1 ? * *") public void resetCache() { // ... }
试试:
@Scheduled(cron = "0 1 1 * * ?")
下面你可以在spring论坛上find示例模式:
* "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/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
Cronexpression式由六个字段表示:
second, minute, hour, day of month, month, day(s) of week
(*)
表示匹配任何
*/X
表示“每X”
?
(“没有具体的值”) – 当你需要在允许字符的两个字段中的一个字段中指定某些内容时非常有用,而不是另一个。 例如,如果我想让我的触发器在每个月的某个特定的日子(例如,第10日)开火,但是不在乎每周的哪一天发生,我会把“10”月份字段和“?” 在星期几的领域。
PS:为了使其工作,请记住在您的应用程序上下文中启用它: http : //docs.spring.io/autorepo/docs/spring-framework/current/spring-framework-reference/html/scheduling.html#调度注解的支持
对于我的调度程序,我使用它在每天早上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 }
您可以从这里find完整的时区值。
注意:我的Spring框架版本是:4.0.7.RELEASE
你可以使用@Scheduled(cron ="0 1 1 * * ?")
来注释你的方法。
0 – 是几秒钟
1- 1分钟
一天中的一小时。
gipinani的回答中遗漏了一些东西
@Scheduled(cron = "0 1 1,13 * * ?", zone = "CST")
这将执行在1.01和13.01。 当您需要每天不需要多次运行作业时,可以使用它。
当您在远程服务器上进行部署时,zone属性非常有用。 这是spring4引入的。
有一件事我注意到了:spring CronTrigger不是cron。 你可能会得到一个有效的cronexpression式中的7个参数(你可以在cronmaker.com上进行validation),然后弹簧不接受它。 大多数情况下,你只是删除最后一个参数,一切工作正常。