Spring Cron scheduler “disable pattern”

孤街浪徒 提交于 2020-01-21 10:43:10

问题


My application loads some cron patterns from a properties file. Im using the @Scheduled annotation like this:

@Scheduled(cron = "${config.cronExpression:0 0 11,23 * * *}")

Now I want to disable some tasks and the easiest solution would be to enter a cron pattern wich will never run. In order to do this, I thought about using a cron expression that only executes at a specific day in the past. But unfortunately the Spring cron expressions don't allow to add a year or a date in the past.

Is there any pattern that will never run?


回答1:


Per the Javadocs, as of Spring 5.1.0 the @Scheduled annotation can accept "-" as the cron expression to disable the cron trigger.

The special value "-" indicates a disabled cron trigger, primarily meant for externally specified values resolved by a ${...} placeholder.




回答2:


If it was a cron expression, you could have used below which makes the cron run on 2099

59 59 23 31 12 ? 2099

But spring scheduler does not take a year as input. This is what I have found to defer it for some extended period. Below will run on 29 Feb which will be a leap year.

0 0 0 29 2 ?



回答3:


If you're stuck pre Spring 5.1.0 (SpringBoot < 2.1), your only option may be to disable the bean/service with the @Scheduled method altogether, for example by using a @ConditionalOnProperty("my.scheduleproperty.active") annotation and not setting the property (or setting it to false)



来源:https://stackoverflow.com/questions/36403671/spring-cron-scheduler-disable-pattern

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!